在Python中使用cv2.findContours()时出错
image-processing
opencv
python
5
0

我最近开始学习Python上的OpenCV。

我在这里指的是教程,以获取有关获取图像轮廓的帮助。

我的代码是-

import cv2
import numpy as np

img = cv2.imread('shapes.jpg', 0)
img = cv2.medianBlur(img, 5)
thresh =     cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2)

cv2.imshow('Thresh', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

image, contours, hierarchy =   cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(image, countours, -1, (0,255,0), 3)
cv2.imshow('Contours', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

出现第一个阈值图像,但是之后我收到一条错误消息

Traceback (most recent call last):
  File "contours.py", line 21, in <module>
    image, contours, hierarchy =     cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
ValueError: need more than 2 values to unpack

解决此问题的任何帮助将不胜感激。

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

您链接的教程适用于OpenCV version 3cv2.findContours确实返回该版本的3个对象。

因此,要么更新opencv,要么使用@will使用解决方案。

收藏
评论

这个例子。

cv2.findContours(...)

只返回两个对象,您正试图将其拆成三个对象。

将该行更改为此:

contours, hierarchy =   cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

它应该工作。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号