我使用了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库构建的。