0

我有2个序列。一个(我们称之为 cvSeq x),它包含许多轮廓(来自 cvFindContours)和第二个(我们称之为 cvSeq y),我使用了 cvCreateSeq,但实际上并没有任何东西。我正在遍历 x 中的所有轮廓,如果轮廓符合特定标准,我将其添加到 y。我可以进行循环,但是如果符合标准,我不知道如何将 x 中的轮廓添加到 y 中。

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

PS:cvStartFindContours 不是一个选项。

4

1 回答 1

1

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

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

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

vector<vector<Point>> contours;

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

现在访问轮廓和点变得更加简单和容易

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

于 2011-11-19T09:45:09.270 回答