0

我已经使用 opencv findContours的示例代码来获取轮廓。

成功获得此图像的正确轮廓。

但是当我在我的项目中使用 findContours 时,它得到了错误的轮廓数据,例如轮廓有 0 点,轮廓向量中有数百万个点,有些点是巨大的数字。

我的项目列表中的测试代码如下:

Mat src=imread("data/artists-icon.png",1);
Mat src_gray = Mat::zeros(src.size(), CV_8UC3);
cvtColor(src, src_gray, CV_BGR2GRAY);

imshow("src_gray", src_gray);

Canny(src_gray, src_gray, 100, 200, 3);
imshow("src_gray2", src_gray);

vector<vector<Point> > contours;
vector<Vec4i> hierarchy;

waitKey(0);
findContours(src_gray, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
cout << "contour size: " << contours.size() << endl;

是错误轮廓数据的图像。

这是正确的轮廓数据

我已经重新创建了我的项目,但问题仍然存在。

我怎么解决这个问题?

更新:

当我将路径“/”更改为“\”并制作 CV_RGB2GRAY 而不是 CV_BGR2GRAY 时,这也是错误的。

下面是灰色和精明输出列表的图像。

原文:i.imgur.com/KXB6OAS.png

灰色:i.imgur.com/y1prHnj.png

精明的输出:i.imgur.com/UtUzRkh.png

比较:i.imgur.com/lLZ8OBj.jpg

我在我的项目中使用该库:FLTK、openGL(freeglut、glew)、LinearSystemLib 2005、opencv211 和我编译的 gpu。findcontours 示例代码 opencv 网站是使用我项目中的相同 opencv 库构建的。

4

0 回答 0