巫山雨_fz 2021-06-08 20:38 采纳率: 74.1%
浏览 66
已结题

opencv+python提取轮廓例程,为什么报错呢

import cv2
import numpy as np
img=cv2.imread('test.jpg')
imgray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh=cv2.threshold(imgray,127,255,0)
image,contours,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.imshow('imageshow',image)  # 显示返回值image,其实与输入参数的thresh原图没啥区别
cv2.waitKey()
print(np.size(contours))  #   得到该图中总的轮廓数量
print(contours[0])   #  打印出第一个轮廓的所有点的坐标, 更改此处的0,为0--(总轮廓数-1),可打印出相应轮廓所有点的坐标
print(hierarchy) #打印出相应轮廓之间的关系
img=cv2.drawContours(img,[contours[0]],-1,(0,255,0),10)  #标记处编号为0的轮廓,此处img为三通道才能显示轮廓
cv2.imshow('drawimg',img)
cv2.waitKey()
cv2.destroyAllWindows()

Traceback (most recent call last):

  File "D:\lpcj\Qt-Camera\lunkuo.py", line 14, in <module>
    image,contours,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

ValueError: not enough values to unpack (expected 3, got 2)

  • 写回答

3条回答 默认 最新

  • 爱晚乏客游 2021-06-08 22:59
    关注

    第六行只有两个返回值的,你写的三个返回值是旧版本的opencv,应该是2.x和3.4之前的写法吧,目前的4.x版本都是两个返回值,第一个代表轮廓,第二个代表轮廓关系

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

    而这句报错ValueError: not enough values to unpack (expected 3, got 2),的意思就是没有足够对应的值,你希望返回值是三个,但是实际上只有两个返回值(expected 3, got 2)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月25日

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂