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

FindContour()不工作,虽然图像是二进制opencv

解高昂
2023-03-14

因此,我尝试获取图像的轮廓,但它似乎是错误的数据类型,我得到以下错误:

cv2。错误:OpenCV(4.2.0)/Users/travis/build/skvark/OpenCV-python/OpenCV/modules/imgproc/src/contours。cpp:197:错误:(-210:不支持的格式或格式组合)[Start]FindContours在模式下仅支持CV_8UC1图像!=CV_RETR_FLOODFILL仅在函数“cvStartFindContours_Impl”中支持CV_32SC1图像

我了解到图像不是二进制图像可能会有问题,但在我的情况下,我已经通过阈值转换了图像:

 im = cv2.imread("picture.jpg")

 cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
 (thresh, im_t) = cv2.threshold(im, 160, 255, cv2.THRESH_BINARY)

 im_tb = cv2.convertScaleAbs(im_t)  #this does not seem to help either

 (contours, hierarchy) = cv2.findContours(im_tb,cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

谢谢你的帮忙

共有1个答案

孙熠彤
2023-03-14

而不是

   cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)

你应该使用

   im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)

否则,转换结果将被丢弃,并且仍然具有3通道RGB图像。

 类似资料:
  • 我无法在如下所示的html页面上运行php脚本: 这是我的名片。htaccess文件: AddType应用程序/x-httpd-php5。php5添加类型应用程序/x-httpd-php5。phps 在我的apache.conf我补充道: php5_module模块/mod_php55.so 但是,在重新启动apache时,警告显示其已加载。 我还检查了php是否已安装,是否已安装,以及是否已安装

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

  • 出于某种原因,我的图像图标正在出现错误,尽管我试图修复它... 我读过这个问题,答案建议在mitmap文件夹中创建图像图标。因此,我将代码行从更改为 您可以看到图像上有一个错误。为什么会这样? 我曾试图: 清洁项目 重建项目 确保@mitmap/ic_启动器确实存在: 即使在我所有的尝试之后,错误仍然存在。我已经被困在这个问题上好几个小时了,我的脑袋都转不过来了。这是我的代码还是android s

  • 主要内容:示例使用方法将灰度图像转换为二进制值图像。以下是此方法的语法。 该方法接受以下参数 - mat - 表示输入图像的对象。 dst - 表示输出图像的对象。 thresh - 表示阈值的整数。 maxval - 一个整数,表示与和阈值类型一起使用的最大值。 type - 表示转换类型的整数代码,例如RGB到灰度。 通过将代码与值一起传递给其余参数,可以将灰度图像转换为二值图像。 示例 以下程序演示如何将

  • 我创建了一个简单的例子来说明我正在努力做的事情: 代码加载图像,将其转换为灰度,并使用模块运行维纳算法来增强图像,之后我想将图像转换为二值图像(黑白)。当我运行上面的代码时,我得到以下错误: OpenCV错误:在阈值文件/home/mrichey/Downloads/opencv2中的断言失败(src.type()==CV_8UC1)。4/opencv-2.4.6.1/modules/imgpro

  • 我有一个代码,其中矩阵hip_dir表示一个RGB图像。如果我检查它的形状,python返回(1080, 1920, 3)。如果我写 我得到保存在文件夹中的正确图像。然而,当我这样做的时候 我得到了同样的图像,黑色和白色(有一些蓝色像素,但是,使这更奇怪)。 如何正确使用imshow? 编辑: 使用命令cv2。cvtColor导致以下错误: Edit2:我发现发生这个错误的原因很简单,因为矩阵是n