我使用了包含4个圆圈的互联网随机图片。 [但是,opencv分段代码检测307个轮廓。但是,我想只检测4个圆圈。所以我试图模糊图像以消除噪音。但是,仍然没有帮助。 然后我使用了以下代码。
Mat ContourOutline = Mat::zeros(cannyEdges.size(), CV_8UC3);
for (int i = 0; i < contours.size(); i++)
{
cout << "Area of contour " << i << "=" << contourArea(contours[i])<<"\n";
Scalar color = Scalar(0,0,255);
drawContours(ContourOutline, contours, i, color, 2, 8, hierarchy, 0, Point());
}
这产生了一个完美的图像。![绘制4个圆圈] [3]现在,我想在这个图像上运行查找轮廓代码。但是,Visual Studio会抛出一个未处理的异常。我该怎么做来检测这四个圆圈?
答案 0 :(得分:0)
您创建ContourOutline
作为CV_8UC3
元素矩阵,其中(可能)表示是BGR
彩色图像,但findContours
使用{{1}类型的二进制图像作为输入。
试试这段代码:
CV_8UC1