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

OpenCV卡尔曼滤波实现鼠标追踪时cv2.line参数类型错误问题

报错根因
  • OpenCV的cv2.line绘图函数对传入的坐标点有严格的类型要求,必须是整数类型的标量,你当前的传参不符合要求:
    1. 代码中定义的measurement是形状为(2,1)的np.float32类型二维数组,last_measurement[0]实际是一个长度为1的float数组,不是单个坐标数值
    2. OpenCV 4.x版本强化了参数类型校验,不再自动兼容float类型的坐标输入,所以直接抛出类型错误
修复方案

只需要修改两处绘制线条的代码,在传参时把数组中的浮点值转为int类型的标量即可,属于最小改动,不会影响卡尔曼滤波的计算精度:

# 绘制实测轨迹(绿色)
cv2.line(img, 
         (int(last_measurement[0][0]), int(last_measurement[1][0])),
         (int(measurement[0][0]), int(measurement[1][0])), 
         (0,255,0))

# 绘制预测轨迹(红色)
cv2.line(img, 
         (int(last_prediction[0][0]), int(last_prediction[1][0])),
         (int(prediction[0][0]), int(prediction[1][0])), 
         (0,0,255))

修改后重新运行代码即可正常实现鼠标轨迹的卡尔曼追踪效果,绿色线条为鼠标实际移动轨迹,红色线条为卡尔曼滤波的预测轨迹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 03:06:04