如何使用Python OpenCV将黑白灰度图像转换为BGR格式
灰度图像转OpenCV BGR格式实现方法
你对OpenCV图像矩阵存储结构的认知是正确的:单通道灰度图为H×W二维矩阵,BGR格式彩色图为H×W×3三维矩阵。灰度转BGR的核心逻辑是将单通道的灰度值复制到B、G、R三个通道,三个通道数值相同时视觉上仍为灰度效果,但格式符合BGR的三通道规范。
方法1:调用OpenCV内置转换接口(最常用)
直接使用OpenCV封装好的色彩空间转换函数即可完成转换,代码示例如下:
import cv2 # 读入灰度图,得到shape为 (高度, 宽度) 的二维矩阵 img_gray = cv2.imread("test_gray.jpg", cv2.IMREAD_GRAYSCALE) # 灰度转BGR img_bgr = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2BGR) # 验证转换结果:输出为 (高度, 宽度, 3) print(img_bgr.shape)
方法2:手动矩阵拼接(适合理解底层逻辑)
基于numpy的矩阵操作直接拼接三个相同的灰度通道,效果和内置接口完全一致:
import cv2 import numpy as np img_gray = cv2.imread("test_gray.jpg", cv2.IMREAD_GRAYSCALE) # 沿最后一个维度堆叠3个灰度矩阵,得到三通道BGR格式 img_bgr = np.stack([img_gray]*3, axis=-1)
常见使用场景说明
转换后的BGR格式灰度图可以直接适配所有OpenCV的彩色图像处理操作,比如在图上绘制彩色框、添加彩色文字等,不会出现通道不匹配的报错。
内容的提问来源于stack exchange,提问作者Francesco Pagani
相关产品推荐
相关产品推荐

