python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)
python | OpenCV小记(一):cv2.imread(f)读取图像操作
- 1. 为什么 `[:, :, 0]` 提取的是第一个通道(B 通道)?
- OpenCV 的通道存储格式
- 索引操作 `[:, :, 0]` 的解释
- 常见误解
1. 为什么 [:, :, 0]
提取的是第一个通道(B 通道)?
OpenCV 的通道存储格式
OpenCV 默认读取的图像是 BGR 格式,即通道顺序为 Blue(蓝)、Green(绿)、Red(红)。
当使用 cv2.imread(f)
读取图像时,返回的数组形状为 (H, W, 3)
,其中:
H
是图像高度(Height),W
是图像宽度(Width),3
是通道数(B、G、R)。
索引操作 [:, :, 0]
的解释
- 维度顺序:OpenCV 返回的数组是
(H, W, C)
,即第三个维度(索引为2)对应通道。 [:, :, 0]
的含义::
表示保留所有行(高度)和列(宽度),0
表示取第三个维度(通道维度)的第一个通道,即 B 通道。
- 结果:通过
[:, :, 0]
提取 B 通道后,图像变为单通道(灰度图),形状为(H, W)
。
常见误解
用户可能误以为 [:, :, 0]
是对第三个通道赋值为0,但实际上这是 索引操作,不是赋值操作。
如果目标是提取 R 通道(红色),应使用 [:, :, 2]
。