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

如何解决YOLOv7实例分割中cv2.resize的Bad argument错误?

YOLOv7实例分割cv2.resize报错解决

问题原因

报错提示src is not a numpy array,说明processFrame(image)返回的结果不是OpenCV能处理的numpy数组格式——可能是返回了None、PIL图像、PyTorch张量等非numpy类型数据。

解决步骤

1. 确认processFrame的返回类型

先打印返回值的类型和内容,定位问题:

image_display = processFrame(image)
print(type(image_display), image_display) # 新增调试代码

根据打印结果对应处理:

  • 如果是PIL图像,转成numpy数组:
    from PIL import Image
    import numpy as np
    image_display = np.array(processFrame(image))
    
  • 如果是PyTorch张量,转成numpy数组并调整维度/范围:
    # 假设张量格式为[C, H, W],转成[H, W, C]的numpy数组
    image_display = processFrame(image).permute(1, 2, 0).cpu().numpy()
    # 若张量做了归一化(值在0-1之间),还原到0-255的uint8格式
    image_display = (image_display * 255).astype(np.uint8)
    
  • 如果返回None,检查processFrame函数内部逻辑,确保它能正确输出处理后的图像。

2. 增加类型校验(可选但推荐)

在resize前添加断言,提前发现类型问题:

image_display = processFrame(image)
assert isinstance(image_display, np.ndarray), f"processFrame返回类型错误:预期numpy数组,实际为{type(image_display)}"
image_display = cv2.resize(image_display, (img_size[1], img_size[0]))

3. 修正通道顺序(避免颜色异常)

因为代码中把图像转成了RGB格式,而OpenCV的imwrite和imshow默认使用BGR,所以处理后要转回来:

image_display = cv2.cvtColor(image_display, cv2.COLOR_RGB2BGR)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:01:04