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

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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵