作者:JasonChen
时间:2019.4.27
博主今天在做图像识别的项目,需要用到PIL包读取并显示图像,可是显示图像如下图所示:
而原图像是这种:
显然,图像颜色失真,注:"SS"是我加在图层上面的字符
通过参考其他博客的内容:总共得到两种bug:
(1)需要说明的是:若图像的像素矩阵是三维的话,则PIL默认是RGB格式读取进来,若像素矩阵是二维的话,则会强制被认为是灰度图(“L”)格式,这和像素值大小无关,只和像素矩阵的维数有关,其中灰度图格式只处理[0,1]浮点型数值,若图像的像素值远远超过了1且不为三维的话,即造成图像失真。
(2)若图像是三维的,但是读取进来的是BGR格式的话,需要将其转化为RGB格式,这里贴出PIL包转化的具体代码,其中pic_path是图像路径,需要导入PIL包:
from PIL import Image
image = Image.open(pic_path)
b, g, r = image.split()
image = Image.merge("RGB", (r, g, b))
plt.imshow(image)
本次着重讨论解决第一种的方法:首先查看读取进