从阈值图像中查找轮廓



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

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

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

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

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

根据教程..然后,我应该能够在阈值映像上调用findContours()

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

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

等值线 = cv2.findContours(thresh,cv2.RETR_TREE,CV2.CHAIN_APPROX_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 出了什么问题

提前致谢

如评论中所述,您必须注意两个问题:

返回cv2.findContours()类型

cv2.findContours()有两个返回值:

  • 图像中存在的轮廓
  • 这些等高线的层次结构

返回cv2.threshold()类型

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

  • 返回值。(它返回float用于对像素值进行分类的阈值的值(
  • 阈值图像

最新更新