python | OpenCV小记(一):cv2.imread(f)读取图像操作
-
-
- [1. 为什么 `[:, :, 0]` 提取的是第一个通道(B 通道)?](#1. 为什么
[:, :, 0]
提取的是第一个通道(B 通道)?) -
- [OpenCV 的通道存储格式](#OpenCV 的通道存储格式)
- [索引操作 `[:, :, 0]` 的解释](#索引操作
[:, :, 0]
的解释) - 常见误解
- [1. 为什么 `[:, :, 0]` 提取的是第一个通道(B 通道)?](#1. 为什么
-
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]
。