gzr2017 / ImageProcessing100Wen

「画像処理100本ノック」中文版本!为图像处理初学者设计的 100 个问题。
https://github.com/yoyoyo-yo/Gasyori100knock
MIT License
3.59k stars 1.06k forks source link

修正了ValueError #3

Closed Zpadger closed 4 years ago

Zpadger commented 4 years ago

运行原文件时报错“ValueError:not enough values to unpack (expected 3 got 2)”

Zpadger commented 4 years ago

运行原文件时报错“ValueError:not enough values to unpack (expected 3 got 2)”,是这行代码出现问题“H, W, C = img.shape”,将其改为“H, W =img.shape”即可正常运行,C值在该程序之后也没有用到。虽然改正了错误,但是不太明白其中的原理。可以请作者指导一下,为什么之前的程序中都用到了C值,而该程序中没有用到吗?非常感谢!

supernatural commented 4 years ago

H,W,C = img.shape 这一句是获取图像的高、宽、通道数的,C即通道数,也就是每个像素有几个字节组成. opencv读取彩色图像时imread函数返回的是BGR格式,即每个像素由Blue, Green, Red3个色彩组成,每种色彩一个字节,共3个字节。所以此时img.shape返回的C值为3. 而对于灰度图像,每个像素只有一个字节,所以img.shape返回的只有高和宽,没有通道数。 所以你看到区别就在于要处理的图像是彩色的还是灰度的。

gzr2017 commented 4 years ago

BGR2GRAY(img)返回的确实是一个二维的矩阵,不是三维的

可以去原作者那里提一下

Zpadger commented 4 years ago

你好,原代码anwser_4.py无法运行,共有四处错误,已改正,可正确运行

Zpadger commented 4 years ago

NameError: name 'otsu_binalization' is not defined

UnboundLocalError: local variable 'max_sigma' referenced before assignment

NameError: name 'H' is not defined