首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >findContours给了我一个错误,即使它不应该错误,有什么原因吗?

findContours给了我一个错误,即使它不应该错误,有什么原因吗?
EN

Stack Overflow用户
提问于 2020-06-08 23:05:11
回答 1查看 87关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
复制
---------------------------------------------------------------------------

ValueError跟踪(最近一次调用)在1 im = image_list[4] 2 ret,thresh = cv2.threshold(im,127,255,0) ----> 3 image, contours, hierarchy = cv2.findContours(thresh , cv2.RETR_TREE , cv2.CHAIN_APPROX_SIMPLE) 4 image = cv2.drawContours(image, contours, -1, (0,255,0), 3) 5

ValueError:没有足够的值来解包(预期3,got 2)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 23:21:33

不同版本的OpenCV返回来自cv2.findContos的不同数量的项目。

OpenCV 4和OpenCV 2具有类似的行为,返回两个项,而OpenCV 3返回三个项。

你的版本显然只需要两个项目。所以试试

代码语言:javascript
代码运行次数:0
运行
复制
contours, hierarchy = cv2.findContours(thresh , cv2.RETR_TREE , cv2.CHAIN_APPROX_SIMPLE)

或者,如果您想要某种版本无关的内容,那么如果您需要使用层次结构

代码语言:javascript
代码运行次数:0
运行
复制
contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
hierarchy = contours[1] if len(contours) == 2 else contours[2]
contours = contours[0] if len(contours) == 2 else contours[1]

或者如果你只想要轮廓

代码语言:javascript
代码运行次数:0
运行
复制
contours = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = contours[0] if len(contours) == 2 else contours[1]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62272551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档