第3章 · 图像基础
数字图像表示(像素、通道)、颜色空间(RGB、灰度、HSV)、图像读取与显示(OpenCV基础)
3.1 数字图像表示
数字图像由像素(pixel)构成,每个像素存储颜色信息。灰度图像每个像素只有一个亮度值(0~255),彩色图像通常包含多个通道(channel)。
图3-1 数字图像像素网格表示(灰度)
通道与彩色图像
彩色图像通常使用 RGB 三通道,每个通道分别表示红、绿、蓝的强度。一张 640×480 的彩色图像包含 640×480×3 个数值。
| 属性 | 灰度图 | 彩色图 (RGB) |
|---|---|---|
| 通道数 | 1 | 3 |
| 像素深度 | 8 bit (0~255) | 8 bit × 3 |
| 数据形状 | (H, W) | (H, W, 3) |
3.2 颜色空间
不同的颜色空间适用于不同任务:RGB 用于显示,灰度 用于简化计算,HSV 更符合人类感知。
图3-2 RGB 与 HSV 颜色空间示意
常用颜色空间转换
- RGB → 灰度:Y = 0.299·R + 0.587·G + 0.114·B
- RGB → HSV:通过非线性变换分离色调、饱和度、明度
- HSV 优势:对光照变化更鲁棒,常用于颜色分割
3.3 图像读取与显示 (OpenCV基础)
OpenCV 是计算机视觉标准库,使用 cv2.imread() 读取图像,cv2.imshow() 显示图像。注意 OpenCV 默认使用 BGR 通道顺序。
图3-3 OpenCV 图像读取与显示管线
代码示例:读取、转换、显示
import cv2
# 读取图像 (默认 BGR)
img_bgr = cv2.imread('face.jpg')
# 转换为灰度
img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)
# 转换为 HSV
img_hsv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2HSV)
# 显示原图
cv2.imshow('BGR Image', img_bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()
常用 OpenCV 函数速查
| 函数 | 说明 |
|---|---|
cv2.imread(path, flag) | 读取图像,flag 控制颜色 (1=彩色, 0=灰度) |
cv2.imshow(win, img) | 显示图像窗口 |
cv2.cvtColor(img, code) | 颜色空间转换 |
cv2.waitKey(delay) | 等待键盘输入,单位毫秒 |