Python语法错误:ValueError:太多值无法解包(预期2)

时间:2019-12-07 21:06:25

标签: python-3.x

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

> head(pop1)
            chr start    end         pi
1 Scaffold_2074 10000  60000 0.02540892
2 Scaffold_2074 20000  70000 0.03581412
3 Scaffold_2074 30000  80000 0.03999322
4 Scaffold_2074 40000  90000 0.05402227
5 Scaffold_2074 50000 100000 0.05350814
6 Scaffold_2074 60000 110000 0.04260332


 > head(pop2)
            Chr start    end         pi
1 Scaffold_2074 10000  60000 0.01910726
2 Scaffold_2074 20000  70000 0.02757993
3 Scaffold_2074 30000  80000 0.03359872
4 Scaffold_2074 40000  90000 0.04590020
5 Scaffold_2074 50000 100000 0.04594944
6 Scaffold_2074 60000 110000 0.04054279


> head(fst1x2)
            chr start    end    Fst01
1 Scaffold_2074 10000  60000 0.101773
2 Scaffold_2074 20000  70000 0.096691
3 Scaffold_2074 30000  80000 0.099691
4 Scaffold_2074 40000  90000 0.085867
5 Scaffold_2074 50000 100000 0.079663
6 Scaffold_2074 60000 110000 0.065473

代码:

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)   

1 个答案:

答案 0 :(得分:2)

OpenCV's website所述:

  

可以通过img.shape访问图像的形状。它返回行,列和通道数的元组(如果图像是彩色的)

     

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

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

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

以下内容适用于彩色图像:

rows, cols, channels = img.shape

但是,根据OpenCV's website的建议:

  

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

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