位置: IT常识 - 正文
推荐整理分享机器学习报错解决2——ValueError: too many values to unpack (expected 3),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
参考资料:蔚蓝呆鸟
在我学习Pytorch的PIL模块的过程中,运行了如下代码:
from PIL import Imagea = Image.open('Avengers.jpeg')ra, ga, ba = a.split() # 把图像分割为R,G,B三个通道图像ra.save("R.jpg")ga.save("G.jpg")ba.save("B.jpg")大致意思是将一张RGB图片分成R、G、B三个通道,并分别将每个通道的图片保存下来。
但是出现了如下的报错:
ValueError: too many values to unpack (expected 3)
翻译一下就是用来接收的变量数与函数需要接收的变量数不一致。
我查找了好久的博客,终于找到一篇博客问题描述与我的相符(就是参考资料后面给的链接)
问题在于,'Avengers.jpeg’这张图片的通道不一定只有三个!
于是我在第二行之后加一行代码:
print(a.mode, a.size, a.format)输出结果为:
RGBA (600, 299) PNG这里输出的是RGBA而不是RGB!RGBA模式有四种颜色通道,所以应该由四个变量去接收。
修改后的代码如下:
from PIL import Imagea = Image.open('Avengers.jpeg')print(a.mode, a.size, a.format)ra, ga, ba, aa = a.split() # 把图像分割为R,G,B三个通道图像ra.save("R.jpg")ga.save("G.jpg")ba.save("B.jpg")aa.save("A.jpg")运行结果:该目录的文件夹内新增加了四张图片,但是除了‘A.jpg’是白色图片以外,另外三张图片都是灰色(我猜是灰度图,保存的时候只保存了一个数字值,然后系统默认为只有一个通道的灰度图)
我目前没有找到解决办法,于是调用pylab模块
from PIL import Imagefrom pylab import subplot, imshow, showa = Image.open('Avengers.jpeg')ra, ga, ba, aa = a.split() # 把图像分割为R,G,B三个通道图像subplot(221)imshow(ra)subplot(222)imshow(ga)subplot(223)imshow(ba)subplot(224)imshow(aa)show()运行结果:
上一篇:Vue中的methods方法使用技巧,三分钟迅速读懂(vue中methods的作用)
友情链接: 武汉网站建设