OpenCV摄像头实时处理项目实战 - 第3节

3. OpenCV基础操作

读取图像 · 显示图像 · 保存图像 · 图像属性获取 cv2.imread / imshow / imwrite

3.1 读取图像

使用 cv2.imread() 将图像从磁盘加载为 NumPy 数组。支持彩色、灰度、原始格式。

磁盘文件 cv2.imread() flags: 1/0/-1 numpy.ndarray H×W×C
import cv2

# 读取彩色图像 (默认 BGR)
img = cv2.imread('example.jpg')

# 读取灰度图像
gray = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)

# 读取包含 alpha 通道的图像
unchange = cv2.imread('example.jpg', cv2.IMREAD_UNCHANGED)

3.2 显示图像

cv2.imshow() 创建窗口并显示图像,配合 waitKey() 和 destroyAllWindows() 控制显示时长。

数组数据 cv2.imshow() 窗口名 + 图像 GUI窗口
cv2.imshow('显示窗口', img)
cv2.waitKey(0)          # 等待按键
cv2.destroyAllWindows() # 关闭所有窗口

3.3 保存图像

cv2.imwrite() 将数组编码并写入磁盘,支持 PNG、JPEG 等格式。

处理后的数组 cv2.imwrite() 文件名 + 数组 磁盘文件
success = cv2.imwrite('output.png', img)
if success:
    print("图像保存成功")

3.4 图像属性获取

通过 NumPy 数组的 shape、dtype、size 获取尺寸、通道数、数据类型等信息。

属性代码说明
高度、宽度、通道数img.shape返回 (H, W, C) 元组
像素总数img.sizeH × W × C
数据类型img.dtype通常为 uint8
通道数img.shape[2]灰度图无此维度
图像数组 ndarray 属性提取 .shape → (480,640,3) .dtype → uint8 .size → 921600 元数据
import cv2

img = cv2.imread('scene.jpg')
h, w, c = img.shape
print(f"分辨率: {w} x {h}, 通道数: {c}")
print(f"数据类型: {img.dtype}, 总像素: {img.size}")

3.5 综合小例程

读取图像 → 显示属性 → 灰度转换 → 保存新图像。

import cv2

# 读取
color = cv2.imread('flower.jpg')
print('原始 shape:', color.shape)

# 转灰度
gray = cv2.cvtColor(color, cv2.COLOR_BGR2GRAY)
print('灰度 shape:', gray.shape)

# 保存
cv2.imwrite('flower_gray.png', gray)

# 显示
cv2.imshow('彩色', color)
cv2.imshow('灰度', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()