python/opencv/matplotlib 关于图像保存的小笔记

今天在做图像处理转灰度练习的时候,无意中发现:
用matplotlib.image.imsave存储的灰度图像对应的是三元组矩阵(MN3)
而存储前的灰度图像矩阵为(MN)。下面上代码和结果:
python/opencv/matplotlib 关于图像保存的小笔记
这里的imgName+extension就是图片文件名
这是rgb2gray函数本体,网路上随处可见:
python/opencv/matplotlib 关于图像保存的小笔记这是运行结果:
python/opencv/matplotlib 关于图像保存的小笔记发现尽管我使用imsave的时候设置了cmap=‘gray’(也就是灰度映射),导出的矩阵依然是M
N3的(尽管看上去是灰白图像。而且存储用的原来的矩阵为MN)。在考虑是不是参数设置的问题,于是去看了看官方手册,并没有对导出灰度图像(MN)做明确的说明。最后还是选择了用其他的库对图像进行保存。这里采用opencv:
python/opencv/matplotlib 关于图像保存的小笔记这里的三个矩阵分别对应:灰度矩阵、通过mpimg.imsave+灰度矩阵存储为图像的矩阵、通过cv2.imwrite+灰度矩阵存储为图像的矩阵:
python/opencv/matplotlib 关于图像保存的小笔记明显发现了三个矩阵,前两个格式为M
N,最后一个是MN3。
最后补上两个导出图片信息对比,先是MN3的:
python/opencv/matplotlib 关于图像保存的小笔记再是用opencv导出的M*N的:
python/opencv/matplotlib 关于图像保存的小笔记图像在色彩上有一点点区别呢。然后我们看一看位深度就知道结果的不同了!

后来发现,matplotlib在show图片的时候,也依然会把图片变成MN3的格式。
比如你想要显示灰度图像的时候,结果却是绿的奇怪,那请指定cmap=‘gray’
python/opencv/matplotlib 关于图像保存的小笔记

后来发现,matplotlib在show图片的时候,也依然会把图片变成MN3的格式。比如你想要用MN矩阵通过imshow来显示灰度图像的时候,结果却是绿的奇怪,那请指定cmap=‘gray’。这个现象已经表明了图片被转化成MN*3。然后我们便能在figure中看见黑白图像,但实际上,它具有24位深度。

以上,只是把发现的问题记录下来并积累经验。其实想尽量用matplotlib做下去的。
由于我也是用python进行图像处理的初学者,大佬们有问题或者更好的解决办法请提出来,不胜感激!

PS:这里吐槽一下CDSN自带的编辑器真的很难用啊。虽然有很大一部分原因是第一次用。以后还是在其他地方编辑好了再贴上来吧