python+OpenCV笔记(一):图像的I/O操作

OpenCv提供了imread函数从文件加载图像,也提供了imwrite函数将图像写入文件,支持BMP,PNG,JPEG,TIFF等静态图像文件格式。

1.读取图像

(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)。

2.显示图像

(1)OpenCv API

cv2.imshow()

参数: 1.显示图像的窗口名称 2.要加载的图像
注意: 在有其他GUI框架的支持下,仅用imshow()便可能显示出来,但在opencv中,只有调用waitKey时,才会绘制窗口。

(2)使用matplotlib显示图像

plt.imshow(img[:, :, ::-1])  # 通道反转
plt.show()

3.保存图像

API

cv2.imwrite()

参数: 1.文件名 2.要保存的图像

4.代码编写

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)

python+OpenCV笔记(一):图像的I/O操作_第1张图片

- - - - -细节扩展- - - - -:

  1. imread返回BGR格式的图像,即使文件使用的是灰度格式。

你可能感兴趣的:(python+OpenCv,opencv,python,计算机视觉)