|
<火山程序 类型 = "通常" 版本 = 1 />
包 火山.程序
类 启动类 <公开 基础类 = 窗口程序类>
{
变量 主窗口对象 <类型 = 我的主窗口>
方法 启动方法 <公开 类型 = 整数>
{
主窗口对象.创建主窗口 ()
返回 (1)
}
}
# ===
类 我的主窗口 <基础类 = 窗口 注释 = "样例主窗口" @视窗.布局 = "client_size = \"500, 300\"" 标题 = "我的主窗口">
{
变量 视频地址 <公开 类型 = 文本型 值 = "G:\\target_tracking\\vtest.avi">
变量 按钮1 <类型 = 按钮 隐藏值属性 = "0" @视窗.布局 = "id = 101\r\npos = \"173, 22, 120, 40\"" 标题 = "打开视频">
变量 视频 <公开 类型 = CV视频>
变量 当前帧 <公开 类型 = CV矩阵类>
变量 单目标跟踪 <公开 类型 = CV单目标跟踪器>
变量 多目标跟踪 <公开 类型 = CV多目标跟踪器TLD>
变量 ROT <公开 类型 = CV矩形类>
变量 ROT1 <公开 类型 = CV矩形类>
变量 ROT2 <公开 类型 = CV矩形类>
变量 ROT3 <公开 类型 = CV矩形类>
变量 初始化ROT <公开 类型 = CV矩形类小数>
变量 初始化ROT2 <类型 = CV矩形类小数>
变量 初始化ROT3 <类型 = CV矩形类小数>
变量 ROT容器 <公开 类型 = CV矩形类容器>
方法 按钮_被单击 <接收事件 类型 = 整数 注释 = "当按钮被单击后发送此事件">
参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
如果 (来源对象 == 按钮1)
{
如果真 (视频.打开视频 (视频地址, ) == 假)
{
信息框 ("视频不存在!", , )
}
视频.取当前帧 (当前帧)
ROT容器.加入成员 (ROT1)
ROT容器.加入成员 (ROT2)
ROT容器.加入成员 (ROT3)
调试输出 ("ROT容器成员数:" + 到文本 (ROT容器.取成员数 ()))
单目标跟踪.初始化 (当前帧, ROT1)
单目标跟踪.初始化 (当前帧, ROT2)
单目标跟踪.初始化 (当前帧, ROT3)
单目标跟踪.创建KFC跟踪器 ()
CV核心.选择ROI多个 ("选择窗口", 当前帧, ROT容器, , )
判断循环 (当前帧.是否为空 () == 假)
{
当前帧.释放 ()
视频.取当前帧 (当前帧)
如果 (当前帧.是否为空 () == 真)
{
返回 (1)
}
调试输出 ("这里1")
单目标跟踪.更新跟踪器 (当前帧, ROT1)
// 单目标跟踪.更新跟踪器 (当前帧, ROT2)
// 单目标跟踪.更新跟踪器 (当前帧, ROT3)
多目标跟踪.添加_单个目标 (单目标跟踪, 当前帧, 初始化ROT)
多目标跟踪.添加_单个目标 (单目标跟踪, 当前帧, 初始化ROT2)
多目标跟踪.添加_单个目标 (单目标跟踪, 当前帧, 初始化ROT3)
调试输出 (多目标跟踪.更新ROI (当前帧))
CV核心.画矩形 (当前帧, ROT1, CV标量类.新建三通道 (100, 0, 200), , )
CV核心.画矩形 (当前帧, ROT2, CV标量类.新建三通道 (0, 0, 200), , )
CV核心.画矩形 (当前帧, ROT3, CV标量类.新建三通道 (0, 100, 200), , )
CV核心.显示图像 ("当前帧图像", 当前帧, , )
如果真 (CV核心.等待按键 (5) == 27)
{
跳出循环
}
}
调试输出 ("这里2")
}
返回 (0)
}
}
|
|