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

OpenCV imshow()处理Unity3D ARGB32格式图像整体偏蓝问题求助

ARGB32图像偏蓝问题修复方案

问题原因

  • Unity输出的WebCamTexture ARGB32格式通道顺序为 A→R→G→B,四个通道的数组索引分别对应0、1、2、3
  • OpenCV原生支持的图像通道顺序为BGR(3通道)/BGRA(4通道),直接传入ARGB格式图像会因通道不匹配导致颜色偏移,出现整体偏蓝的问题

修复代码(无alpha通道场景,最常用)

try:
    while(True):
        data = sock.recv(480 * 640 * 4)
        if(len(data) == 480 * 640 * 4):
            # 替换废弃的fromstring为frombuffer,避免运行警告
            image = numpy.frombuffer(data, numpy.uint8).reshape(480, 640, 4)
            # 提取ARGB中的B/G/R通道,调整为OpenCV兼容的BGR顺序
            bgr_image = image[:, :, [3,2,1]]
            cv2.imshow('Image', bgr_image)
            
            key = cv2.waitKey(1) & 0xFF
            if key == ord("q"):
                break
finally:
    sock.close()
    # 释放OpenCV窗口资源,避免进程残留
    cv2.destroyAllWindows()

修复代码(保留alpha通道场景)

如果业务需要用到透明通道,可以调整为OpenCV兼容的BGRA格式:

# 调整通道顺序为B→G→R→A
bgra_image = image[:, :, [3,2,1,0]]
cv2.imshow('Image', bgra_image)

额外说明

也可以通过OpenCV内置的颜色转换接口实现格式转换,效果和手动调整通道一致:

# ARGB转BGRA再转BGR
bgra_image = cv2.cvtColor(image, cv2.COLOR_ARGB2BGRA)
bgr_image = cv2.cvtColor(bgra_image, cv2.COLOR_BGRA2BGR)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:54:05