【问题标题】:Python syntax error: ValueError: too many values to unpack (expected 2)Python 语法错误:ValueError: too many values to unpack (expected 2)
【发布时间】:2020-04-01 10:55:15
【问题描述】:

第 5 行有什么问题?我直接从书中复制但收到此错误:

py edge.py
Traceback (most recent call last):
  File "edge.py", line 5, in <module>
    rows,cols = img.shape
ValueError: too many values to unpack (expected 2)   

代码:

import cv2 


img = cv2.imread('489.jpg')
rows, cols = img.shape
sobel_horizontal = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
cv2.imshow('Input image', img)

cv2.waitKey()

【问题讨论】:

标签: python-3.x


【解决方案1】:

OpenCV's website 所述:

图像的形状由 img.shape 访问。它返回一个包含行数、列数和通道数的元组(如果图像是彩色的)

如果图像是灰度图,返回的元组只包含行数和列数

您的代码从 img.shape 的结果中解压缩了 2 个值,因此它仅适用于灰度图像。

如果您的图像是彩色的,您还应该解压缩第三个值。否则,您会遇到遇到的错误,因为您尝试在 img.shape 为您提供 3 个值时解压缩 2 个值。

以下方法适用于带颜色的图像:

rows, cols, channels = img.shape

但是,正如 OpenCV's website 所建议的那样:

检查加载的图像是灰度还是彩色是一个很好的方法。

这样,您将知道要解压缩多少个值,并且您的程序将同时适用于灰度和彩色图像。

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 2019-02-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多