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

使用OpenCV 4.10.0的TrackerDaSiamRPN调用init时抛出未知C++异常

解决OpenCV TrackerDaSiamRPN初始化异常问题

问题原因分析

  • 图像格式不兼容:DaSiamRPN跟踪器要求输入为3通道彩色BGR图像,但代码中将帧转换为了单通道灰度图,导致初始化失败。
  • 预训练模型缺失:OpenCV的DaSiamRPN依赖官方预训练权重文件,若未正确加载会触发底层C++异常。

具体修复步骤

1. 恢复彩色图像输入

移除灰度转换代码,直接使用原始BGR格式的帧:

import cv2

video_path = '.../v1.mp4'
video = cv2.VideoCapture(video_path)

tracker = cv2.TrackerDaSiamRPN()

if not video.isOpened():
    print("Could not open video")
    exit()  # 增加退出逻辑避免后续无意义执行

# 读取第一帧
ok, frame = video.read()
if not ok:
    print('Cannot read video file')
    exit()

# 移除灰度转换语句:frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
roi = cv2.selectROI(frame, True)

tracker.init(frame, roi)

2. 配置预训练模型路径

DaSiamRPN需要加载官方提供的两个模型文件:dasiamrpn_model.onnx 和 dasiamrpn_kernel_r1.onnx,需在初始化时指定路径:

# 替换为你本地的模型文件路径
model_path = "/your/path/dasiamrpn_model.onnx"
kernel_path = "/your/path/dasiamrpn_kernel_r1.onnx"

# 带参数初始化跟踪器
tracker = cv2.TrackerDaSiamRPN_create(model_path, kernel_path)

注意:无参构造cv2.TrackerDaSiamRPN()会尝试从OpenCV默认路径加载模型,若路径下无模型文件则会抛出异常。

3. 额外验证项

  • 检查OpenCV完整性:运行print(cv2.getBuildInformation()),确认输出中包含opencv_contrib模块(DaSiamRPN属于contrib组件)。
  • 确认视频路径有效性:优先使用绝对路径,避免相对路径导致的文件查找失败。

内容的提问来源于stack exchange,提问作者Babak.Abad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:52:04