当前位置: 首页 > 知识库问答 >
问题:

findContours错误“仅支持8uC1图像”

琴献
2023-03-14

试图在二进制图像上运行findContour”

Mat conv(image.size(), CV_8U);
image.convertTo(conv, CV_8U);
vector<vector<cv::Point> > contours;

findContours(conv, contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);

thorws错误:

OpenCV Error: Unsupported format or combination of formats ([Start]FindContours support only 8uC1 images) in cvStartFindContours, 

有什么想法吗?谢啦

共有1个答案

倪振海
2023-03-14

从文件中:

C:void Mat::convertTo(输出数组m,int-rtype,双alpha=1,双beta=0)常数
参数:

rtype–所需的输出矩阵类型,或者更确切地说,深度,因为通道数与输入相同;如果rtype为负,则输出矩阵的类型将与输入矩阵的类型相同。

您可以看到,convertTo不会改变通道的数量,这意味着您很可能得到3个通道(r、g和b)。但是,findContours需要单色图像。

您需要将图像转换为黑白:

cv::Mat bwImage;
cv::cvtColor(image, bwImage, CV_RGB2GRAY);
vector< vector<cv::Point> > contours;
cv::findContours(bwImage, contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
 类似资料:
  • 我尝试使用图像处理技术,如直方图反投影和形态学滤波,但每当我试图在处理后的图像上找到轮廓时,它总是给我一个错误: 我试图找到多种方法将我处理过的图像转换成8uC1或32sC1,但都失败了。有人能告诉我如何将图像转换为8uC1或32sC1类型,以便在图像中找到轮廓吗? 代码:

  • 我在火灾探测方面有问题我的代码是: 当我运行这个程序时,看到这个错误 请帮帮我。tnx

  • 我试图对我的图像进行预处理,以便最终从预处理后的图像中找到轮廓。 它给了我一个错误说明:OpenCV错误:cvStartFindContours中不支持的格式或格式组合([Start]FindContours在模式下仅支持CV_8UC1图像!=CV_RETR_FLOODFILL,否则仅支持CV_32SC1图像) 我用的是opencv3.0

  • 我已经将我的图像文件转换为灰度,然后对其进行模糊处理并使用canny,结果是uint8,但我仍然得到了错误。请帮忙!

  • 几天前,我能够在硒中进行测试。我今天尝试运行我的代码,并收到以下错误消息: 谷歌浏览器将短暂打开并立即关闭,而无需运行实际测试。我卸载并重新安装了谷歌浏览器,并收到同样的问题。我目前正在使用Mac并使用Java运行自动化测试。 可以帮我通过这个考试吗?这样我就可以继续工作了。

  • 问题内容: 我正在尝试运行一个简单的应用程序。我有一个Express后端,在访问时会返回JSON字符串。当我运行服务器并通过AngularService向该链接发出请求时,出现以下错误: XMLHttpRequest无法加载localhost:4201/ticker。跨源请求仅支持以下协议方案:http,数据,chrome,chrome扩展名,https。 ,该模块与我的Express服务器一起使