|
沙发
楼主 |
发表于 2023-7-14 15:23:25
|
只看该作者
<火山程序 类型 = "通常" 版本 = 1 />
包 火山.程序
类 启动类 <公开 基础类 = 程序类>
{
方法 启动方法 <公开 类型 = 整数>
{
变量 图像文件目录 <类型 = 文本型
值 = "P:\\voldev\\win_android\\samples\\vprj_win\\samples\\cv_ai_samples\\share_data\\images\\">
变量 跟踪器 <类型 = CV目标跟踪器>
变量 采集帧 <类型 = CV矩阵类>
变量 视频 <类型 = CV视频>
变量 ROI <类型 = CV矩形类>
变量 ROI2 <类型 = CV矩形类>
变量 ROI3 <类型 = CV矩形类>
变量 中心点 <类型 = CV坐标点>
变量 容器 <类型 = CV矩形类容器>
如果真 (视频.打开视频 (图像文件目录 + "test.mp4", ) == 假)
{
标准输出 (控制台程序输出方向.错误输出设备, "打开视频失败")
标准输入 ()
返回 (1)
}
容器.加入成员 (ROI)
容器.加入成员 (ROI2)
容器.加入成员 (ROI3)
视频.取当前帧 (采集帧)
// 1、读取第一帧图像,用于初始化跟踪器
CV核心.显示图像 ("鼠标框选跟踪对象", 采集帧, , )
// ROI = CV核心.选择ROI ("鼠标框选跟踪对象", 采集帧, 真, )
CV核心.选择ROI多个 ("鼠标框选跟踪对象", 采集帧, 容器, , )
CV核心.关闭窗口 ("鼠标框选跟踪对象")
调试输出 ("执行到这里1")
// 2、创建跟踪器,可以创建多种跟踪器,这里只例举一种
跟踪器.创建KFC跟踪器 ()
// 3、为跟踪器初始化第一次图像与目标框
变量 AA <类型 = 整数>
调试输出 ("执行到这里2")
调试输出 (容器.取成员数 ())
计次循环 (容器.取成员数 ())
{
跟踪器.初始化 (采集帧, 容器.取成员 (AA))
调试输出 (容器.取成员 (AA))
AA = AA + 1
}
判断循环 (采集帧.是否为空 () == 假)
{
采集帧.释放 ()
视频.取当前帧 (采集帧)
如果 (采集帧.是否为空 () == 真)
{
返回 (1)
}
// 4、实时更新跟踪器,输入一张新的图像,会输出一个找到的目标矩形框
跟踪器.更新跟踪器 (采集帧, ROI)
中心点.X = ROI.X
中心点.Y = ROI.Y
CV核心.画矩形 (采集帧, ROI, CV标量类.新建三通道 (255, 0, 0))
// CV核心.画十字线 (采集帧, 中心点, CV标量类.新建三通道 (0, 55, 255), 2, , )
CV核心.显示图像 ("跟踪显示_按下ESC键退出,当前帧率:" + 到文本 ((整数)视频.帧率), 采集帧, , )
// 5、释放矩阵以节约资源
如果 (CV核心.等待按键 (5) == 27)
{
跳出循环
}
}
返回 (1)
}
}
然后选择完成按esc继续运行,就报错:
--- 开始调试当前项目"目标跟踪"编译后的结果文件"G:\target_tracking\_int\target_tracking\debug\x64\linker\target_tracking.exe"
正在启动被调试程序
执行到这里1
执行到这里2
3
无法解析的对象数据,其输出类名为: "rg_n::rg_n8256", 地址为: 0x9A4FDCF5C0
无法解析的对象数据,其输出类名为: "rg_n::rg_n8256", 地址为: 0x9A4FDCF5C0
错误: 接收到未经处理的严重异常,代码为: 0xE06D7363
被调试程序已经退出,退出码为0xE06D7363.
调试已经停止 |
|