第3章 · 图像基础

数字图像表示(像素、通道)、颜色空间(RGB、灰度、HSV)、图像读取与显示(OpenCV基础)

3.1 数字图像表示

数字图像由像素(pixel)构成,每个像素存储颜色信息。灰度图像每个像素只有一个亮度值(0~255),彩色图像通常包含多个通道(channel)。

像素网格示意 (4×4) 每个小格 = 1 像素 灰度值范围 [0, 255]
图3-1 数字图像像素网格表示(灰度)

通道与彩色图像

彩色图像通常使用 RGB 三通道,每个通道分别表示红、绿、蓝的强度。一张 640×480 的彩色图像包含 640×480×3 个数值。

属性灰度图彩色图 (RGB)
通道数13
像素深度8 bit (0~255)8 bit × 3
数据形状(H, W)(H, W, 3)

3.2 颜色空间

不同的颜色空间适用于不同任务:RGB 用于显示,灰度 用于简化计算,HSV 更符合人类感知。

RGB 与 HSV 颜色空间对比 B G R RGB 三通道独立存储 Hue Saturation Value 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 通道顺序。

OpenCV 图像读取流程 imread() BGR 数组 imshow() 窗口 注意:OpenCV 使用 BGR 顺序,显示时需转换 RGB
图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)等待键盘输入,单位毫秒