第3章 · OpenCV入门
OpenCV库安装 · 读取摄像头 · 显示视频帧 · 保存图像
# 实战基石
3.1 安装 OpenCV (Python)
OpenCV (Open Source Computer Vision Library) 是计算机视觉领域最流行的库之一。在 Python 环境中,推荐使用 pip 安装核心包 opencv-python 以及扩展包 opencv-contrib-python(包含额外模块)。
# 推荐在虚拟环境中安装
pip install opencv-python==4.9.0.80
pip install opencv-contrib-python==4.9.0.80 # 可选,包含额外模块
安装完成后,在 Python 中验证:
import cv2
print(cv2.__version__) # 输出类似 4.9.0
3.2 读取摄像头
使用 cv2.VideoCapture() 打开摄像头设备,参数 0 表示默认摄像头。通过 .read() 方法逐帧捕获。
import cv2
cap = cv2.VideoCapture(0) # 打开默认摄像头
if not cap.isOpened():
print("无法打开摄像头")
exit()
while True:
ret, frame = cap.read() # 读取一帧
if not ret:
break
cv2.imshow('Camera', frame) # 显示帧
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
关键点: ret 布尔值表示是否成功读取;frame 是三维 numpy 数组 (H, W, 3)。
3.3 显示视频帧 & 控制循环
cv2.imshow() 创建窗口显示图像,配合 cv2.waitKey() 实现刷新和按键检测。典型帧率约 30 FPS。
# 显示视频帧的标准循环
while True:
ret, frame = cap.read()
if not ret:
print("无法获取帧,退出")
break
cv2.imshow('实时画面', frame)
# 按 'q' 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
| 函数 | 说明 |
|---|---|
cv2.imshow(winname, mat) | 在指定窗口显示图像 |
cv2.waitKey(delay) | 等待键盘输入,delay 单位毫秒;返回按键 ASCII 码 |
cv2.destroyAllWindows() | 关闭所有 OpenCV 窗口 |
3.4 保存图像 (截图)
使用 cv2.imwrite() 将当前帧保存为图片文件。支持 PNG、JPG 等格式。
# 在循环中按 's' 保存当前帧
if cv2.waitKey(1) & 0xFF == ord('s'):
cv2.imwrite('capture.jpg', frame)
print("图像已保存为 capture.jpg")
提示: 保存路径支持相对/路径;cv2.imwrite 返回布尔值表示是否成功。
3.5 综合实战:摄像头预览 + 截图
将以上知识点整合为一个完整的脚本:打开摄像头、实时显示、按 s 保存截图、按 q 退出。
import cv2
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("摄像头打开失败")
exit()
print("按 's' 保存截图,按 'q' 退出")
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('Live Camera', frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
elif key == ord('s'):
filename = 'snapshot.jpg'
cv2.imwrite(filename, frame)
print(f"截图已保存: {filename}")
cap.release()
cv2.destroyAllWindows()
| 操作 | 按键 | 说明 |
|---|---|---|
| 退出程序 | q | 释放摄像头并关闭窗口 |
| 保存截图 | s | 将当前帧写入 snapshot.jpg |
至此,您已掌握 OpenCV 最核心的 I/O 操作:安装、读取摄像头、显示视频帧、保存图像。下一章将深入亮度与曝光控制。