1.1 使用 OpenCV 读取与显示图像
一、读取图像
在 OpenCV 中,使用 imread()
函数读取图像,语法为:
cv2.imread(文件名, 标记符 (flag))
其中,文件名需要用单引号或双引号括起来。标记符默认值为 1,表示读入彩色图像(通道顺序为 BGR)。若标记符设为 0,则读入灰度图。
示例代码:
import cv2
# 以彩色模式读取图像
img1 = cv2.imread('001.bmp')
# 以灰度模式读取图像
img2 = cv2.imread('001.bmp', 0)
# 输出图像的形状信息
print(img1.shape, ' ', img2.shape)
二、显示图像
使用 OpenCV 显示图像的格式为:
cv2.imshow(显示名称, 图像数据)
其中,显示名称由用户自定义(不能为中文),需用单引号或双引号括起来。
通常,完成图片显示时,还需搭配 waitKey()
和 destroyAllWindows()
函数。
-
waitKey()
是一个键盘绑定函数,时间尺度为毫秒级。设为 0 时,表示无限等待,直到用户关闭显示窗口。 -
destroyAllWindows()
用于关闭所有打开的窗口。若只需关闭特定窗口,可使用destroyWindow()
,在括号中指定窗口名。
示例代码:
import cv2
# 读取图像
img = cv2.imread('001.bmp')
# 显示图像
cv2.imshow("001", img)
# 等待用户操作
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
1.2 使用 Matplotlib 读取与显示图像
一、读取图像
在 Matplotlib 中,利用 matplotlib.pyplot
模块的 imread()
函数实现图像数据读取,格式如下:
matplotlib.pyplot.imread("文件名称", 格式(format))
与 OpenCV 的读取方式不同,Matplotlib.pyplot 会根据图片本身特性自动判断是彩色图还是灰度图。
示例代码:
import matplotlib.pyplot as plt
# 读取图像
img = plt.imread('002.bmp')
二、显示图像
使用 matplotlib.pyplot
模块中的 imshow()
函数实现图像显示,常用格式为:
matplotlib.pyplot.imshow(文件名, 颜色图谱(cmap))
最后,需调用 show()
函数完成图像的实际显示。
完整示例代码:
import matplotlib.pyplot as plt
# 读取图像
img = plt.imread('002.bmp')
# 显示图像
plt.imshow(img)
# 添加图像标题
plt.title('002')
# 显示图像
plt.show()
1.3 图像的保存
图像的保存可以使用以下两种方法:
-
使用 OpenCV 的
cv2.imwrite()
函数,格式为:cv2.imwrite("文件名", 图像数据)
。 -
使用 Matplotlib 的
matplotlib.pyplot.imsave()
函数,格式为:matplotlib.pyplot.imsave("文件名", 图像数据)
。
视频读取与显示
以下是一个用于视频读取和显示的示例代码:
import cv2
# 初始化视频捕获对象,参数0表示使用笔记本摄像头,也可以替换为视频文件路径
capture = cv2.VideoCapture(0)
# 设置视频分辨率(可选)
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 960)
# 循环读取视频帧
while True:
# 读取视频帧,ref为返回值,frame为当前帧数据
ref, frame = capture.read()
# 复制当前帧用于后续处理
source = frame.copy()
# 显示原始彩色图像
cv2.imshow("captureSrc", source)
# 将当前帧转换为灰度图像并显示
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('captureGray', gray_frame)
# 等待用户按键,若按下ESC键(键值为27),则退出循环
if cv2.waitKey(1) == 27:
break
# 释放视频捕获资源
capture.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()
# 保存最后一帧彩色图像到硬盘
cv2.imwrite('img.jpg', source)