OpenCv提供了imread函数从文件加载图像,也提供了imwrite函数将图像写入文件,支持BMP,PNG,JPEG,TIFF等静态图像文件格式。
(1)OpenCv API
cv2.imread()
参数:1.要读取的图像(路径) 2.读取方式的标志(flags,可省略)
读取方式的标志: 1.cv2.IMREAD_COLOR:(flags省略时的默认选项,也可用1代替),提供3通道的 BGR图像,每个通道一个8位值(0-255)。
2.cv2.IMREAD_GRAYSCALE:以灰度模式加载图像(可用0代替)
3.cv2.IMREAD_UNCHANGED:读取所有的图像数据,包括作为第四通道的α通道(或透明度通道),可用-1代替(如果有的话)
(2)使用Numpy创建图像
img=numpy.zeros((50, 30), dtype=numpy.uint8)
这里,表示每一个像素都用一个8位整数表示,这是一幅灰度图像,现在,我们使用cv2.cvtColor函数把这幅图像转换成BGR格式。
img=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
这时,每个像素都用一个三元数组表示,每个整数分别表示三个颜色通道(B,G,R)中的一个。
可利用shape属性返回行、列和通道数,函数:print(img.shape) ,两种结果分别是(50,30)和(50,30,3)。
(1)OpenCv API
cv2.imshow()
参数: 1.显示图像的窗口名称 2.要加载的图像
注意: 在有其他GUI框架的支持下,仅用imshow()便可能显示出来,但在opencv中,只有调用waitKey时,才会绘制窗口。
(2)使用matplotlib显示图像
plt.imshow(img[:, :, ::-1]) # 通道反转
plt.show()
API
cv2.imwrite()
参数: 1.文件名 2.要保存的图像
import matplotlib.pyplot as plt
import cv2 as cv
import numpy as np
# 读取图像
img = cv.imread("E:\\qi.png")
img2 = np.zeros((500, 300), dtype=np.uint8)
img2 = cv.cvtColor(img2, cv.COLOR_GRAY2BGR)
# 显示图像
cv.imshow("img", img)
plt.imshow(img2[:, :, ::-1]) # 通道反转
plt.show()
print(img2.shape)
cv.waitKey(0)
cv.destroyAllWindows()
# 保存图像
cv.imwrite("E:\\temp.png", img)