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

Python OpenCV灰度视频输出问题:彩色叠加为何显示白色?

解决OpenCV在灰度相机帧上叠加彩色图层显示白色的问题

核心问题原因

你的IDS UI221工业相机输出的是单通道灰度图像(配置为IS_COLORMODE_MONOCHROME,8位深度,单字节像素)。OpenCV的绘图函数(cv2.rectangle、cv2.putText)在单通道图像上绘制时,会自动丢弃颜色的多通道信息,仅保留亮度值,导致所有设置的彩色最终显示为白色。

错误尝试的问题

之前调用cv2.cvtColor(frame, cv2.COLOR_GRAY2RGB)但未将转换结果赋值给frame,转换后的3通道图像没有替换原单通道帧,所以绘图时依然在灰度图上操作,自然看不到彩色。

正确解决方案

必须将单通道灰度帧转换为3通道BGR格式(OpenCV默认的彩色图像格式),并且要把转换结果重新赋值给原变量:

# 获取相机输出的灰度帧
frame = camera.get_frame()  # 替换为你实际获取帧的代码

# 关键:将灰度帧转换为3通道BGR彩色图
frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)

# 现在绘制彩色图形和文本
# 示例:绘制蓝色矩形和文本(注意OpenCV颜色是BGR顺序,蓝色对应(255,0,0))
cv2.rectangle(frame, (x_min, y_min), (x_max, y_max), (255, 0, 0), 2)
cv2.putText(frame, decoded_barcode, (x_min, y_min-10), 
            cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 0, 0), 2)

# 显示处理后的帧
cv2.imshow("Barcode Scanner", frame)

验证方法

转换后可以通过print(frame.shape)检查帧的维度,正常应该输出(高度, 宽度, 3),表示这是一个3通道彩色图像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:54:23