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