火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 420|回复: 1
打印 上一主题 下一主题

请问一下CV核心.选择ROI多个 这个命令怎么使用呢

[复制链接]

24

主题

207

帖子

1580

积分

金牌会员

Rank: 6Rank: 6

积分
1580
跳转到指定楼层
楼主
发表于 2023-7-14 15:18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<火山程序 类型 = "通常" 版本 = 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 + 1
            跟踪器.初始化 (采集帧, 容器.取成员 (AA))
            调试输出 (容器.取成员 (AA))

        }

        判断循环 (采集帧.是否为空 () == 假)
        {
            采集帧.释放 ()
            视频.取当前帧 (采集帧)
            如果 (采集帧.是否为空 () == 真)
            {
                返回 (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)
    }
}


回复

使用道具 举报

24

主题

207

帖子

1580

积分

金牌会员

Rank: 6Rank: 6

积分
1580
沙发
 楼主| 发表于 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.
调试已经停止
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-16 04:31 , Processed in 0.088035 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表