图像的基本操作如读取、显示、存储,通过调用opencv中的cv2.imread()、cv2.imshow()、cv2.imwrite()
先导入需要学习需要用到的几个库
import cv2
import numpy as np
import matplotlib.pyplot as plt
一定要注意通过opencv读取到的图像格式是BGR,而其他所有图像库读入彩色图片都是以主流的RGB格式存储,且**cv2.imshow()
函数也是按照BGR格式来显示图像**
还要注意除了PIL库读入的图片是img类之外,其他库读入的图片都是numpy矩阵,且在各大图像库中,opencv的性能是最好的
下面是图像的读取与显示操作
img_BGR = cv2.imread('./img.jpg')
cv2.imshow('img_bgr', img_BGR)
cv2.waitKey()
cv2.destroyAllWindows() # 在运行cv2.imshow后,需要使用cv2.waitKey来保持窗口的显示
如果想从BGR转成RGB格式可以这么转
img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB)
plt.imshow(img_RGB) # plt.show()显示图像是根据RGB格式显示,所以使用plt.show()而不使用cv2.imshow()
手动实现可以参考如下代码
h, w, c = img_BGR.shape
img_RGB = np.zeros([h, w, c], img_BGR.dtype)
img_RGB[:, :, 0] = img_BGR[:, :, 2]
img_RGB[:, :, 1] = img_BGR[:, :, 1]
img_RGB[:, :, 2] = img_BGR[:, :, 0]
plt.imshow(img_RGB)
以上三段代码都会显示同一幅图像(注意上面是在Jupyter中逐一运行)
接下来是图片的存储。函数 cv2.imwrite()
用于将图像保存到指定的文件。
此函数的参数为 cv2.imwrite(filename, img, [paras])
参数说明
一般只需要设置前两个参数就行,此函数保存的是numpy数组,且还要注意保存文件的格式是根据filename的扩展名决定的,与读取的图像文件的格式无关。
cv2.imwrite('./write.jpg', img_BGR)
执行上面代码后,文件目录就会生成名为write的jpg格式图像