#CV 概览与数字图像基础:RGB/HSV 颜色空间、像素矩阵与位深度
📂 所属阶段:第一阶段 — 图像处理基石(传统 CV 篇)
🔗 相关章节:OpenCV 快速入门 · 图像增强与滤波
#1. 什么是计算机视觉?
#1.1 CV 的三个层次
低层视觉(Low-level):
→ 图像处理、滤波、边缘检测
→ 输入:图像,输出:图像
中层视觉(Mid-level):
→ 特征提取、目标检测、图像分割
→ 输入:图像,输出:结构化信息
高层视觉(High-level):
→ 场景理解、行为识别、3D 重建
→ 输入:图像,输出:语义理解#1.2 CV 的应用领域
人脸识别 → 安防、支付、解锁
目标检测 → 自动驾驶、监控、工业检测
医学影像 → 肿瘤检测、诊断辅助
增强现实 → 虚拟试衣、游戏、导航#2. 数字图像基础
#2.1 像素与矩阵
"""
数字图像 = 像素矩阵
灰度图像:
H × W 矩阵,每个元素是 0-255 的灰度值
彩色图像:
H × W × 3 矩阵,三个通道分别代表 R、G、B
示例:
图像 = [[255, 128, 0],
[64, 192, 32],
[16, 48, 200]]
这是一个 3×3 的灰度图像
"""
import numpy as np
import cv2
# 创建一个 100×100 的黑色图像
black_img = np.zeros((100, 100), dtype=np.uint8)
# 创建一个 100×100 的彩色图像(RGB)
color_img = np.zeros((100, 100, 3), dtype=np.uint8)
print(f"灰度图像形状: {black_img.shape}") # (100, 100)
print(f"彩色图像形状: {color_img.shape}") # (100, 100, 3)#2.2 位深度(Bit Depth)
位深度 = 每个像素用多少比特表示
8 位:0-255(256 种灰度)→ 最常见
16 位:0-65535(65536 种灰度)→ 医学影像
32 位:浮点数 0.0-1.0 → 高精度处理#3. RGB 颜色空间
#3.1 RGB 原理
"""
RGB = Red, Green, Blue
每个通道 0-255,共 256^3 ≈ 1600 万种颜色
示例:
(255, 0, 0) = 红色
(0, 255, 0) = 绿色
(0, 0, 255) = 蓝色
(255, 255, 255) = 白色
(0, 0, 0) = 黑色
"""
import cv2
import numpy as np
# 创建一个 200×200 的红色图像
red_img = np.zeros((200, 200, 3), dtype=np.uint8)
red_img[:, :] = [0, 0, 255] # OpenCV 使用 BGR 顺序!
# 创建一个渐变图像
gradient = np.zeros((200, 200, 3), dtype=np.uint8)
for i in range(200):
gradient[i, :] = [i, i, i] # 灰度渐变
cv2.imshow("Red Image", red_img)
cv2.imshow("Gradient", gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()#3.2 OpenCV 中的 BGR 顺序
"""
注意:OpenCV 使用 BGR 顺序,不是 RGB!
这是 OpenCV 的历史遗留问题
"""
import cv2
# 读取图像(OpenCV 默认 BGR)
img = cv2.imread("photo.jpg")
# 转换为 RGB(用于显示或其他库)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 转换为灰度
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#4. HSV 颜色空间
#4.1 HSV vs RGB
RGB:计算机友好,但不符合人类直觉
HSV:人类友好,更容易进行颜色分割
H(色调):0-180,代表颜色(红、绿、蓝等)
S(饱和度):0-255,颜色的纯度
V(亮度):0-255,颜色的明暗#4.2 HSV 应用:颜色分割
import cv2
import numpy as np
# 读取图像
img = cv2.imread("photo.jpg")
# 转换为 HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义红色范围(HSV)
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
# 创建掩码
mask = cv2.inRange(hsv, lower_red, upper_red)
# 提取红色区域
result = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("Red Objects", result)
cv2.waitKey(0)#5. 小结
数字图像三要素:
1. 像素矩阵:H × W(灰度)或 H × W × 3(彩色)
2. 位深度:通常 8 位(0-255)
3. 颜色空间:RGB(计算机)或 HSV(人类直觉)
2026 年实践:
- 大多数场景用 RGB/BGR
- 颜色分割用 HSV
- 医学影像用 16 位灰度💡 记住:理解像素矩阵是 CV 的基础。所有高级算法都是在操作这些矩阵。
🔗 扩展阅读

