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

从阈值图像中寻找轮廓

越霖
2023-03-14

我目前正在阅读OpenCV网站tyring上的示例代码,以查找图像中的轮廓。

我首先读取图像并转换为灰度:

img = cv2.imread('/.../.../four.png')
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

然后,我通过应用阈值将图像转换为二进制:

thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY)

根据教程...然后,我应该能够调用阈值图像上的findContour()

contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

当尝试执行此代码时,由于某种原因,我得到一个类型错误:

轮廓=cv2。findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_Abrox_SIMPLE)类型错误:图像不是数字元组

不确定为什么?

以下是更容易阅读的完整代码:

img = cv2.imread('/Users/samtozer/Desktop/four.png')
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY)
contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(img, contours, -1, (0,255,0), 3)

想知道以前是否有人遇到过这个问题?如果是这样,xD出了什么问题

提前谢谢

共有1个答案

屠嘉勋
2023-03-14

如评论中所述,有两个问题需要注意:

返回类型的cv2.findContour()

cv2中有两个返回值。findContours()

  • 图像中显示的轮廓

cv2的返回类型。阈值()

cv2.threshold()中有两个返回值:

  • 返回值。(它返回用于分类像素值的阈值的浮点值)
  • 阈值图像
 类似资料:
  • 图像阈值 目标 在本教程中,您将学习简单阈值处理,自适应阈值处理,Otsu阈值处理等。 您将学习以下函数:cv2.threshold, cv2.adaptiveThreshold等。 一、单的阈值 在这里,事情是直截了当的。如果像素值大于阈值,则为其分配一个值(可以是白色),否则为其分配另一个值(可以是黑色)。使用的函数是cv2.threshold。第一个参数是源图像,它应该是灰度图像。第二个参数

  • 目标 在本教程中,您将学习简单阈值,自适应阈值和Otsu阈值。 你将学习函数cv.threshold和cv.adaptiveThreshold。 简单阈值 在这里,问题直截了当。对于每个像素,应用相同的阈值。如果像素值小于阈值,则将其设置为0,否则将其设置为最大值。函数cv.threshold用于应用阈值。第一个参数是源图像,它应该是灰度图像。第二个参数是阈值,用于对像素值进行分类。第三个参数是分

  • 什么是快速可靠的方法来阈值图像可能模糊和不均匀的亮度? 示例(模糊但亮度一致): 因为不能保证图像具有均匀的亮度,所以使用固定阈值是不可行的。自适应阈值工作正常,但由于模糊,它会在特征中造成中断和扭曲(这里,重要的特征是数独数字): 我也尝试过使用直方图均衡化(使用OpenCV的均衡器函数)。它在不减少亮度差异的情况下增加对比度。 我找到的最佳解决方案是将图像按其形态闭合(归功于这篇文章)进行分割

  • 本文向大家介绍opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器,包括了opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器的使用技巧和注意事项,需要的朋友参考一下 定位色块常用到hsv色彩空间下的颜色阈值,笔者曾经用openmv时,其IDE有自带一个阈值编辑器,使用起来非常方便,现在在linux上跑cv算法,需要类似的功能,因此自己写了一个阈值编辑器。 目前暂时只支持HSV色彩空间

  • 如何设置模糊图像的阈值以使数字尽可能清晰? 在之前的一篇文章中,我尝试自适应地对模糊的图像进行阈值化(左),这导致数字失真和断开连接(右): 从那时起,我尝试使用本文中描述的形态学关闭操作来使图像的亮度均匀: 如果我自适应地设置此图像的阈值,则不会得到明显更好的结果。但是,由于亮度大致一致,我现在可以使用普通阈值: 这比以前好多了,但我有两个问题: 我必须手动选择阈值。虽然关闭操作会产生均匀的亮度

  • 我有一张非常模糊的432x432的数独拼图,它的自适应阈值不好(取5x5像素块大小的平均值,然后减去2): 正如你所看到的,数字有点失真,有很多破损,一些5s融合成6s,6s融合成8s。此外,还有大量噪音。为了修复噪声,我必须使用高斯模糊使图像更加模糊。然而,即使是相当大的高斯核和自适应阈值块大小(21x21,减去2)也无法消除所有中断,并将数字融合到一起,甚至更严重: 我还尝试过在阈值化后放大图