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

OpenCV polylines函数报错:车道检测图像参数不兼容问题排查

修复OpenCV polylines的Bad Argument错误

错误根源

你的pred_bin_rgb最终是int64 dtype的ndarray,而OpenCV的cv2.polylines要求输入图像必须是uint8(或其他OpenCV兼容的数值类型)。问题出在变量定义的操作顺序:

pred_bin_rgb = pred_bin_batch[idx].repeat(3,1,1).cpu().numpy().transpose(1, 2, 0).astype(np.uint8) * 255

先执行astype(np.uint8)将数组转为0-255范围的无符号整数,再乘以255会导致数值溢出,NumPy会自动将数组dtype提升为int64以容纳溢出后的数值,最终生成的数组不符合OpenCV的参数要求。

修复方案

调整操作顺序,先乘以255再转换为uint8 dtype:

pred_bin_rgb = (pred_bin_batch[idx].repeat(3,1,1).cpu().numpy().transpose(1, 2, 0) * 255).astype(np.uint8)

操作逻辑:

  • 先将0-1范围的预测值(假设pred_bin_batch的元素是0或1的二进制值)放大255倍,得到0或255的数值
  • 再转换为uint8 dtype,确保数组类型完全匹配OpenCV的要求

额外验证步骤

  • 修复后打印pred_bin_rgb.dtype,确认输出为uint8
  • 确认inst.astype(np.int32)的形状为(N,2)(每个元素包含x、y坐标),符合cv2.polylines对轮廓点的格式要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:58:18