Opencv findContours在特定项目中得到错误的结果

时间:2015-04-09 13:42:49

标签: c++ opencv contour opencv-contour

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

成功获得this image的正确轮廓。

但是当我在我的项目中使用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;

This是错误轮廓数据的图像。

this是正确的轮廓数据。

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

我该如何解决这个问题?

更新

当我将路径“/”更改为“\”并使CV_RGB2GRAY而不是CV_BGR2GRAY时,也会出错。

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

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

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

Canny输出:i.imgur.com/UtUzRkh.png

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

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

0 个答案:

没有答案