2011-11-19 62 views
0

我有2个序列。一个(让我们调用这个cvSeq x),其中包含一些轮廓(从cvFindContours派生)和第二个(让我们调用这个cvSeq y),我已经使用了cvCreateSeq,但实际上并没有任何内容。我循环遍历x中的所有轮廓,并且如果轮廓符合特定条件,我将它添加到y中。我能够做循环,但是我不知道如何在y中添加一个轮廓,如果它符合标准。处理OpenCV中的序列?

有谁知道如何在一个序列中添加一个轮廓到另一个序列(这是空的)?代码示例将不胜感激。

PS:cvStartFindContours不是一个选项。

回答

1

解决方案是使用C++接口,而不是旧接口。使用起来要简单得多。轮廓存储为vector<vector<Point>>

可以以类似的方式使用它:

Mat myImg = (Mat)myIplImage; 
//or better 
Mat myImg = imread("image.jpg"); 

vector<vector<Point>> contours; 

cv::findContours(myImg, contours,...); 

现在进入轮廓和点是非常简单和容易

注意我没有检查代码准确性。您必须验证发送参数的正确方法,以查找曲面,以及其他所有内容。

+0

谢谢。还有一个问题 - 你说轮廓被存储为矢量>。这仍然适用于单个轮廓吗?这不会被存储为矢量? – fdh

+0

应以与其他轮廓存储相同的方式进行存储。所以包含轮廓的矢量将具有size()== 1。 – Sam

+0

明白了。谢谢。 – fdh