文章目录
-
- 一、环境准备与版本检查
- 二、图像读取与基本属性
-
- [1. 读取图像](#1. 读取图像)
- [2. 显示图像](#2. 显示图像)
- [3. 获取图像属性](#3. 获取图像属性)
- 三、图像处理基础操作
- 四、视频处理基础
-
- [1. 视频捕获对象](#1. 视频捕获对象)
- [2. 视频帧读取与处理](#2. 视频帧读取与处理)
- [3. 释放资源](#3. 释放资源)
一、环境准备与版本检查
在开始前,需要安装 OpenCV
安装 OpenCV 命令:
shell
pip install opencv-python
pip install opencv-contrib-python
导入库并检查版本,确保环境配置正确:
python
import cv2
print("OpenCV版本:", cv2.__version__)

说明 :
cv2.__version__ 返回当前安装的 OpenCV 版本号,便于确认环境兼容性。
二、图像读取与基本属性
1. 读取图像
OpenCV 使用 cv2.imread() 读取图像文件,支持多种格式(如 JPG、PNG 等)。
python
a = cv2.imread(r"picture_1.jpg")
方法参数解析:
filename:图像文件路径(字符串)。flags:读取模式,可选参数,常用值有:cv2.IMREAD_COLOR(默认):读取为彩色图像(3通道)。cv2.IMREAD_GRAYSCALE(或0):读取为灰度图像(单通道)。
2. 显示图像
使用 cv2.imshow() 显示图像窗口,cv2.waitKey() 等待键盘输入,cv2.destroyAllWindows() 关闭所有窗口。
python
cv2.imshow("tu", a)
cv2.waitKey(0)
cv2.destroyAllWindows()

方法参数解析:
cv2.imshow(winname, mat):winname:窗口名称(字符串)。mat:要显示的图像矩阵。
cv2.waitKey(delay):delay:等待时间(毫秒),若为0则无限等待直到按键。- 返回值:按键的 ASCII 码(如 ESC 键对应 27)。
cv2.destroyAllWindows():关闭所有由 OpenCV 创建的窗口。
3. 获取图像属性
图像在 OpenCV 中以 NumPy 数组形式存储,可通过以下属性获取基本信息:
python
print("图像形状:", a.shape) # (高度, 宽度, 通道数)
print("图像数据类型:", a.dtype) # 通常是 uint8
print("图像大小:", a.size) # 像素总数 = 高度 × 宽度 × 通道数

三、图像处理基础操作
1. 图像裁剪
通过数组切片实现图像区域的裁剪:
python
b = a[400: 800, 400: 800]
cv2.imshow("piece of picture", b)

说明 :切片格式为 [y_start:y_end, x_start:x_end],注意 OpenCV 中坐标顺序为 (y, x)。
2. 通道分离与合并
彩色图像由 B(蓝)、G(绿)、R(红)三个通道组成。OpenCV 默认以 BGR 顺序存储图像。
通道分离:
python
# 方法一:直接切片
a1 = a[:, :, 0] # B通道
a2 = a[:, :, 1] # G通道
a3 = a[:, :, 2] # R通道
# 方法二:使用 cv2.split()
b, g, r = cv2.split(a)

通道合并:
python
img = cv2.merge((b, g, r))

方法参数解析:
cv2.split(img):将多通道图像拆分为单通道数组列表。cv2.merge(mv):将多个单通道数组合并为多通道图像,参数为通道元组(如(b, g, r))。
3. 通道操作示例
通过置零某些通道实现颜色过滤效果:
python
a_new = a.copy()
a_new[:, :, 1] = 0 # 将 G 通道置零
a_new[:, :, 2] = 0 # 将 R 通道置零
# 此时图像仅保留蓝色分量

四、视频处理基础
OpenCV 支持从视频文件或摄像头实时捕获视频流。
1. 视频捕获对象
python
video_capture = cv2.VideoCapture(r"video1.mp4") # 从文件读取
# video_capture = cv2.VideoCapture(0) # 从默认摄像头读取
方法参数解析:
cv2.VideoCapture(index/filename):index:摄像头设备编号(0 为默认摄像头)。filename:视频文件路径。
2. 视频帧读取与处理
python
while True:
ret, frame = video_capture.read() # 读取一帧
if not ret:
break
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转换为灰度
cv2.imshow("video1", frame)
if cv2.waitKey(60) == 27: # 每帧显示约 60ms,按 ESC 退出
break

方法参数解析:
video_capture.read():返回是否成功(ret)和当前帧图像(frame)。cv2.cvtColor(src, code):颜色空间转换:src:输入图像。code:转换代码,如cv2.COLOR_BGR2GRAY(BGR 转灰度)。
3. 释放资源
处理完成后必须释放视频捕获对象并关闭窗口:
python
video_capture.release()
cv2.destroyAllWindows()