python 图像的读取、保存、显示方式

利用python读取图像数据的方法很多,下面总结一下小编平时读取图像数据的方式。
小编平时读取数据的方式主要有两种,一种是PIL模块的Image,一种就是利用opencv来读取。

1.利用opencv

import cv2 
filepath = '/home/hhhh/aa/'
filename = 'image.png'
image = cv2.imread(filepath + filename)

下面随便读取一张图片显示出来看一下吧。。
原始的图片是这样的:
这里写图片描述

好看吧!!!宫崎骏的哈尔的移动城堡,来看看显示出来的是怎么样的,我们选择两种显示方式:
第一个是openCV的cv2.imshow(),一个是matplotlib的显示方式。

cv2.imshow('1',image)

显示出来的图是这样的:
这里写图片描述
很完美的显示了原图。
接下来看看matplot的显示方式:

import matplotlib.pyplot as plt 
plt.imshow(image)
plt.show()

显示出来的图片是这样的:
这里写图片描述

可以看到opencv显示出来的颜色和matplot显示出来的图片的颜色发生了变化,造成这种差异的原因是opencv读取和显示出来的图片数据格式是(B,G,R)格式的,而matplot显示的(R,G,B)格式的,所以第一通道和第三通道的数据相互交换了。我们尝试利用opencv将三个通道变成(R,G,B)的格式,利用以下代码:

rbg_image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
plt.imshow(rgb_image)
plt.show()

显示出来的图像是这样的:
这里写图片描述

这样rgb_image就是转化过来的rgb通道的图像了。

其实也可以用numpy转化通道顺序,因为opencv读取出来的就是ndarray数据格式的,请看:

rbg_image = image[:,:,::-1]
#将通道逆着来
plt.imshow(rgb_image)
plt.show()

如果想要利用opencv读取灰度图像,那么可以使用以下代码:

image =  cv2.imread(filepath + filename,cv2.IMREAD_GRAYSCALE)

保存:

cv2.imwrite(filename,image)

Image

from PIL import Image 
image = Image.open(filepath + filename)
image_arr = np.array(image)
plt.imshow(image_arr)
plt.show()
plt.imsave(filename,image) ## 保存图像

猜你喜欢

转载自blog.csdn.net/baidu_36161077/article/details/81063382