前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MeanShift算法C++解析(一)

MeanShift算法C++解析(一)

作者头像
钱塘小甲子
发布2019-01-29 09:58:20
9130
发布2019-01-29 09:58:20
举报
文章被收录于专栏:钱塘小甲子的博客

毕业设计的核心是MeanShift算法,作为一个小本,默默先抛开高端的MeanShift纯理论来研究一下程序对图像都做了什么吧。然后回过头去看数学理论会轻松很多吧。不说啦,这个程序也是我根据网上大牛的程序改的,自己简化和改造了一下下。后期当然还要做更多的优化啦~~这次先讲一下主函数吧。开发环境是Qt+OpenCV4.8,不过算法不用OpenCV自带的,只用了OpenCV的数据结构吧啦。

​主函数其实没做什么,首先获取了视频流,然后进入一个While(1)的循环。循环里面判断是否是在视频追踪状态,以及是否在鼠标选择目标状态,两个不同的分支将会调用不同的子函数。其中鼠标事件是一个回调函数。当然啦,这里提一句,Qt不是用回调机制的,这个机制的提供者是OpenCV。

主函数​

intmain(intargc,char*argv[])

代码语言:javascript
复制
{
代码语言:javascript
复制
CvCapture*capture=cvCreateFileCapture("H:/GraduationDesign/Qt/opencv/12.mp4");
代码语言:javascript
复制
current=cvQueryFrame(capture);//cvQuryFrame从摄像头或者文件中抓取一帧
代码语言:javascript
复制
while(1)
代码语言:javascript
复制
{
代码语言:javascript
复制
if(is_tracking)//internaldefineitiontheflagofthetrackingcommand,当鼠标选择完毕之后value为true
代码语言:javascript
复制
{
代码语言:javascript
复制
//此时追踪目标已经初始化
代码语言:javascript
复制
MeanShift_Tracking(current);
代码语言:javascript
复制
}
代码语言:javascript
复制
//=============
代码语言:javascript
复制
//====selectingtarget
代码语言:javascript
复制
//=============
代码语言:javascript
复制
intc=cvWaitKey(1);
代码语言:javascript
复制
//暂停
代码语言:javascript
复制
if(c=='p')//pushthekeyPtoselecttheareatotracking
代码语言:javascript
复制
{
代码语言:javascript
复制
pause=true;
代码语言:javascript
复制
cvSetMouseCallback("Meanshift",onMouse,0);//当你按下P暂停之后,设置鼠标选择的回调函数
代码语言:javascript
复制
}
代码语言:javascript
复制
while(pause)
代码语言:javascript
复制
{
代码语言:javascript
复制
if(cvWaitKey(0)=='p')
代码语言:javascript
复制
pause=false;
代码语言:javascript
复制
}//waitingforthetrackingstart(pushthekeypagain)
代码语言:javascript
复制
//==============
代码语言:javascript
复制
//=====selsectingover
代码语言:javascript
复制
//==============
代码语言:javascript
复制
cvShowImage("Meanshift",current);
代码语言:javascript
复制
current=cvQueryFrame(capture);//抓取一帧
代码语言:javascript
复制
cvSmooth(current,current,CV_MEDIAN,3,3,0,0);
代码语言:javascript
复制
}
代码语言:javascript
复制
cvNamedWindow("Meanshift",1);
代码语言:javascript
复制
cvReleaseCapture(&capture);
代码语言:javascript
复制
cvDestroyWindow("Meanshift");
代码语言:javascript
复制
return0;
代码语言:javascript
复制
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年11月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档