用mfc做目标跟踪界面

阅读: 评论:0

⽤mfc做⽬标跟踪界⾯
在MFC对话框的控件中显⽰Opencv摄像头视频+Camshift跟踪算法实现
⼀般⽤opencv显⽰视频,都⽤cvNamedWindow新建窗⼝,并且在while循环中更新每⼀帧视频,由于窗⼝是opencv⾃⼰创建的,所以在VC中很难对其进⾏控制,出于这个⽬的,希望能将视频显⽰在VC能够控制的部件中。这⾥给出⼀个实例说明如何在MFC对话框的picture控件中显⽰摄像头视频。
主要步骤为:
1.建⽴对话框⼯程并设置对话框布局
内嵌模组注意对话框中间的是picture控件⽤于显⽰视频。
2.和console的程序⼀样,设置opencv库环境,加⼊opencv头⽂件,并定义所需要的变量。
3.关键的是这⼀步,定义CvvImage类型的变量m_CvvImage,这个类型的变量⾥有函数DrawToHDC能在MFC的控件中显⽰视频。
还有⼀个关键的⼀步是设置定时器timer,MFC中不⽤while循序来更新每帧视频,取⽽代之的是在定时
新型混凝土搅拌机器timer的响应函数中实现视频的更新,在本程序中每100毫秒进⼊⼀次定时器,定时器响应时间可以更改。
这⾥给出“打开摄像头”和定时器timer的响应函数。
01 void COpencvUIDlgDlg::OnOpencamera() //打开摄像头按钮的响应函数
02 {
03      // TODO: Add your control notification handler code here
卫生间新型地漏04      m_Video=cvCreateCameraCapture(-1);//打开摄像头
05
06      if (!m_Video)
07          return;半夏去皮机
08
两相流闸阀09      SetTimer(1,100,NULL);//设置定时器
10 }
11usb转并口
12 void COpencvUIDlgDlg::OnTimer(UINT nIDEvent) //定时器的响应函数
13 {
14      // TODO: Add your message handler code here and/or call default
15      //      KillTimer(nIDEvent);
16      m_Frame=cvQueryFrame(m_Video);//m_Frame是IplImage指针类型
17      m_CvvImage.CopyOf(m_Frame,1);//m_CvvImage是CvvImage类型
18              m_CvvImage.DrawToHDC(hDC, &rect);
19              //将CvvImage显⽰在picture控件中,hDC是picture控件的句柄.rect是picture的区域.
20      b_flagProcess=1;
21
22      CDialog::OnTimer(nIDEvent);
23 }
4.加⼊截图和保存视频功能。
本程序下载地址:
---------------------------------------------------------------------------------------------------------------------------------
可以对本程序进⾏⼆次开发,下⾯实现在上述程序的基础上实现Camshift跟踪算法。
Opencv中⾃带Camshift跟踪算法的实现(OpenCV\samples\c\camshiftdemo.c),不过是基于console的,在MFC中实现则不能⽤其本来的⿏标回调函数来定位⽬标,⽽要改⽤MFC的⿏标消息响应函数。
运⾏结果为:
本程序下载地址:
编译环境:winxp vc6.0 需opencv库⽀持
camshift算法的原理见:

本文发布于:2023-05-26 22:11:53,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/115240.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实现   视频   摄像头
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图