You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python OpenCV中显示彩色的Y、Cb、Cr通道?

如何将YCrCb的Cr/Cb通道以彩色形式显示?

单独显示分离后的Cr、Cb通道时,OpenCV会把它们当作单通道灰度图渲染,因为缺少另外两个分量的信息。要实现彩色显示,需要将目标通道与固定的基准分量组合,再转回BGR格式:

  • 对于Cr通道:固定Y分量为中间亮度值(128,对应YCrCb亮度范围的中点),Cb分量也设为128,将三个分量重新合并为YCrCb图像后转成BGR显示。
  • 对于Cb通道:固定Y分量为128,Cr分量设为128,同样合并后转BGR显示。

完整代码示例:

import cv2
import numpy as np

# 读取目标图像
img = cv2.imread("your_image_path.jpg")
# 转换为YCrCb色彩空间
imgYCrCB = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
Y, Cr, Cb = cv2.split(imgYCrCB)

# 创建固定值的基准分量(128为YCrCb亮度范围中间值)
height, width = Y.shape
Y_base = np.full((height, width), 128, dtype=np.uint8)
Cb_base = np.full((height, width), 128, dtype=np.uint8)
Cr_base = np.full((height, width), 128, dtype=np.uint8)

# 生成Cr通道的彩色显示图
cr_color = cv2.merge([Y_base, Cr, Cb_base])
cr_color_bgr = cv2.cvtColor(cr_color, cv2.COLOR_YCrCb2BGR)

# 生成Cb通道的彩色显示图
cb_color = cv2.merge([Y_base, Cr_base, Cb])
cb_color_bgr = cv2.cvtColor(cb_color, cv2.COLOR_YCrCb2BGR)

# 展示结果
cv2.imshow("Y (Grayscale)", Y)
cv2.imshow("Cr (Color)", cr_color_bgr)
cv2.imshow("Cb (Color)", cb_color_bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()

原理说明

YCrCb色彩空间中,Y代表亮度信息,Cr、Cb代表色度分量。单独的Cr/Cb只包含色度差异,没有亮度维度的信息,因此默认显示为灰度。固定Y为中间值后,色度的差异会直接映射为彩色表现,能直观看到Cr/Cb通道的色彩分布特征。

内容的提问来源于stack exchange,提问作者AMINE DZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:30:53