【问题标题】:Python find contours and draw contours function errorPython查找轮廓并绘制轮廓函数错误
【发布时间】:2020-05-26 17:41:45
【问题描述】:

我目前正在从事一个检测图像缺陷的项目。

轮廓没有连接...我不知道为什么它们是离散点

这是我的代码:

   ret, thresh1 = cv2.threshold(img, 95, 255, cv2.THRESH_BINARY)
   cnts= cv2.findContours(thresh1,cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)[-2]
   cv2.drawContours(img, cnts, -1, (255,255,0), 3)

另外,len(cnts) 函数没有返回正确数量的白点...

【问题讨论】:

  • 您的问题不清楚。你的轮廓没有连接是什么意思?您能否上传您正在使用的示例图片并指定您期望从 findContours 中获得的结果?
  • 你怎么知道len(cnts) 没有返回正确的号码?或者这是一个假设/猜测?
  • 也是你的原始图像的第一个黑白,因为那是图像中的缺陷。
  • 你能发布高分辨率图像吗?您的图像在这里没有提供太多信息,因为您检测到的轮廓非常小。
  • 发布您的原始阈值图像。您展示的那个是在 Matplotlib 中绘制的,并且这些斑点不是完全黑白的。我们希望看到从 cv2.imwrite() 保存的图像。还可以在 findContours 中使用 cv2.RETR_EXTERNAL 以仅在每个点周围获取外部轮廓。

标签: python opencv image-processing contour


【解决方案1】:

查找轮廓也有可能是在挖洞。试试这个,看看它是否能解决您的问题。

ret, thresh1 = cv2.threshold(img, 95, 255, cv2.THRESH_BINARY)
cnts= cv2.findContours(thresh1,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[-2]
cv2.drawContours(img, cnts, -1, (255,255,0), 3)

【讨论】:

  • @Luna Liu,所以这里的变化是您只寻找 RETR_EXTERNAL(外部)轮廓,而不是 RETR_LIST。
猜你喜欢
  • 1970-01-01
  • 2019-01-25
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2018-07-09
  • 1970-01-01
  • 2019-07-05
相关资源
最近更新 更多