PIL.Image.open 与 cv2.imread 读取的图片在像素点上不一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PIL.Image.open 与 cv2.imread 读取的图片在像素点上不一致相关的知识,希望对你有一定的参考价值。
参考技术A PIL.Image.open 与 cv2.imread 读取的图片在像素点上不一致,具体原因不明,但是从两者图片相减之后得到图片来看,似乎是 PIL.Image.open 或 cv2.imread 中至少有一个在读取图片时,产生了问题。不过也有可能是下面的原因:
opencv的cv2.imwrite()函数写图像之后,再次读取,其像素值不相等的bug: https://blog.csdn.net/oukohou/article/details/82378552
另得到的经验是,模型在推断阶段的数据处理操作跟训练阶段的都要尽量一致,包括在推理阶段 使用 PIL.Image.open,而在训练阶段 cv2.imread 来读取图片,同时无论操作是否一致,都要对输入、输出做严格的一致性检查,以避免出现意料之外的错误。
python中用Pillow库进行图片处理
PIL:PIL.Image.open
PIL即Python Imaging Library,也即为我们所称的Pillow,是一个很流行的图像库,它比opencv更为轻巧,正因如此,它深受大众的喜爱。
一、图片读取
PIL读进来的图像是一个对象,而不是我们所熟知的numpy 矩阵。
from PIL import Image img = Image.open(\'呆头鸟.jpg\') print(img.format) print(img.size) #注意,省略了通道 (w,h) print(img.mode) #L为灰度图,RGB为真彩色,RGBA为加了透明通道 img.show() # 显示图片
显示效果:
二、灰度的调整
from PIL import Image img = Image.open(\'呆头鸟.jpg\') gray = Image.open(\'呆头鸟.jpg\').convert(\'L\') gray.show()
以上是关于PIL.Image.open 与 cv2.imread 读取的图片在像素点上不一致的主要内容,如果未能解决你的问题,请参考以下文章
游戏开发小技TexturePacker生成的图集逆向切分成精灵小图(json | python | PIL | TextureUnPacker | 逆向 | 切图)
游戏开发小技TexturePacker生成的图集逆向切分成精灵小图(json | python | PIL | TextureUnPacker | 逆向 | 切图)
游戏开发小技TexturePacker生成的图集逆向切分成精灵小图(json | python | PIL | TextureUnPacker | 逆向 | 切图)