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

基于PyTorch+YOLOv5的皮卡丘目标检测结果蓝黄偏色问题求解

问题根因

你遇到的偏色问题是图像通道顺序不匹配导致的:

  • YOLOv5内置的LoadImages工具类底层使用OpenCV加载图像,返回的原始图像im0s是BGR通道顺序的numpy数组
  • 你后续用PIL的Image.fromarray()解析图像时,PIL默认会按照RGB通道顺序处理数组,直接导致红蓝通道反转,就出现了黄色区域变蓝、蓝色区域变黄的现象。

解决方案

只需要在将图像传入PIL处理前,把BGR通道转为RGB即可,有两种修改方式可选:

方式1:修改主逻辑的图像预处理步骤

在主循环中拿到im0后、传入show_pikachu前添加通道转换代码:

for i, det in enumerate(pred):
    im0 = im0s.copy()
    # 新增代码:BGR转RGB,反转最后一维的通道顺序
    im0 = im0[:, :, ::-1]
    det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()
    result = show_pikachu(im0, det)
    result.show()

方式2:修改show_pikachu函数内部逻辑

在Image.fromarray调用前添加通道转换代码:

def show_pikachu(img, det):
    labels = ["pikachu"]
    # 新增代码:BGR转RGB
    img = img[:, :, ::-1]
    img = Image.fromarray(img)
    # 剩余原有逻辑不变
    draw = ImageDraw.Draw(img)
    # ... 后续代码保持原样

两种方式任选其一即可解决偏色问题。如果后续你需要用OpenCV接口保存推理后的图像,记得再把RGB转回BGR再调用cv2.imwrite,避免存图时再次出现偏色。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:48:03