彩色目标跟踪算法

上传人:lis****210 文档编号:179800140 上传时间:2023-01-03 格式:DOCX 页数:6 大小:12.77KB
收藏 版权申诉 举报 下载
彩色目标跟踪算法_第1页
第1页 / 共6页
彩色目标跟踪算法_第2页
第2页 / 共6页
彩色目标跟踪算法_第3页
第3页 / 共6页
资源描述:

《彩色目标跟踪算法》由会员分享,可在线阅读,更多相关《彩色目标跟踪算法(6页珍藏版)》请在装配图网上搜索。

1、/【程序说明】/ 程序说明:0penCV3编程入门0penCV3版书本配套示例程序08/ 程序描述:来自OpenCV安装目录下Samples文件夹中的官方示例程序-彩色目标跟踪操作/开发测试所用操作系统: Windows 7 64bit/开发测试所用IDE版本:Visual Studio 2010/开发测试所用OpenCV版本:3.0 beta/2014年11月 Revised by 浅墨_毛星云/【头文件、命名空间包含部分】/ 描述:包含程序所使用的头文件和命名空间/#include opencv2/video/tracking.hpp#include opencv2/imgproc/img

2、proc.hpp#include opencv2/highgui/highgui.hpp#include #include using namespace cv; using namespace std;/【全局变量声明】/ 描述:声明全局变量/Mat image; boolbackprojMode = false; boolselect0bject = false; inttrack0bject = 0; boolshowHist = true;Point origin;Rect selection;intvmin = 10, vmax = 256, smin = 30;/【onMouse(

3、 )回调函数】/ 描述:鼠标操作回调/static void onMouse( int event, int x, int y, int, void* )if(select0bject )selection.x = MIN(x, origin.x); selection.y = MIN(y, origin.y); selection.width = std:abs(x - origin.x); selection.height = std:abs(y - origin.y);selection&= Rect(0, 0, image.cols, image.rows);switch( event

4、 )/此句代码的 OpenCV2 版为:/case CV_EVENT_LBUTTONDOWN:/此句代码的 OpenCV3 版为:case EVENT_LBUTTONDOWN: origin = Point(x,y); selection = Rect(x,y,0,0); selectObject = true; break;/此句代码的 OpenCV2 版为:/case CV_EVENT_LBUTTONUP:/此句代码的 OpenCV3 版为:case EVENT_LBUTTONUP: selectObject = false; if(selection.width 0 &selection

5、.height 0 )trackObject = -1;break;/【help( )函数】/ 描述:输出帮助信息/static void ShowHelpText()coutnnttt非常感谢购买OpenCV3编程入门一书! n nnttt此为本书OpenCV3版的第8个配套示例程序n nnttt 当前使用的 OpenCV 版本为: CV_VERSIONnn ;cout nnt此Demo显示了基于均值漂移的追踪(tracking)技术n t请用鼠标框选一个有颜色的物体,对它进行追踪操作*;cout nnt 操作说明:ntt用鼠标框选对象来初始化跟踪nttESC -退出程序nttc -停止追踪

6、nttb -开/关-投影视图ntth -显示/隐藏-对象直方图n ttp -暂停视频n;const char* keys =1| | 0 | camera number;/【main( )函数】/ 描述:控制台应用程序的入口函数,我们的程序从这里开始/int main( intargc, const char* argv )ShowHelpText();VideoCapture cap;RecttrackWindow;inthsize = 16; floathranges = 0,180;const float* phranges = hranges;cap.open(0);if( !cap.

7、isOpened() )cout frame;if(frame.empty() )break;frame.copyTo(image);if( !paused )cvtColor(image, hsv, COLOR_BGR2HSV);if(trackObject )int _vmin = vmin, _vmax = vmax;inRange(hsv, Scalar(0, smin, MIN(_vmin,_vmax),Scalar(180, 256, MAX(_vmin, _vmax), mask);intch = 0, 0;hue.create(hsv.size(), hsv.depth();m

8、ixChannels(&hsv, 1, &hue, 1, ch, 1);if(trackObject 0 )Mat roi(hue, selection), maskroi(mask, selection); calcHist(&roi, 1, 0, maskroi, hist, 1, &hsize, &phranges); /此句代码的 OpenCV3 版为: normalize(hist, hist, 0, 255, NORM_MINMAX);/此句代码的 OpenCV2 版为:/normalize(hist, hist, 0, 255, CV_MINMAX);trackWindow =

9、selection;trackObject = 1;histimg = Scalar:all(0);intbinW = histimg.cols / hsize;Mat buf(1, hsize, CV_8UC3);for(int i = 0; i hsize; i+ )buf.at(i) = Vec3b(saturate_cast(i*180./hsize), 255, 255);/此句代码的 OpenCV3 版为: cvtColor(buf, buf, COLOR_HSV2BGR);/此句代码的 OpenCV2 版为:/cvtColor(buf, buf, CV_HSV2BGR);for(

10、int i = 0; i hsize; i+ )intval = saturate_cast(hist.at(i)*histimg.rows/255); rectangle(histimg, Point(i*binW,histimg.rows), Point(i+1)*binW,histimg.rows - val), Scalar(buf.at(i), -1, 8 );calcBackProject(&hue, 1, 0, hist, backproj, &phranges);backproj&= mask;RotatedRecttrackBox = CamShift(backproj, t

11、rackWindow,/此句代码的 OpenCV3 版为:TermCriteria(TermCriteria:EPS | TermCriteria:COUNT, 10, 1 );/此句代码的 OpenCV2 版为:/TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 );if(trackWindow.area() = 1 )int cols = backproj.cols, rows = backproj.rows, r = (MIN(cols, rows) + 5)/6; trackWindow = Rect(trackWindow

12、.x - r, trackWindow.y - r, trackWindow.x + r, trackWindow.y + r) &Rect(0, 0, cols, rows);if(backprojMode )cvtColor(backproj, image, COLOR_GRAY2BGR );/此句代码的 OpenCV3 版为:ellipse( image, trackBox, Scalar(0,0,255), 3, LINE_AA );/此句代码的 OpenCV2 版为:/ellipse( image, trackBox, Scalar(0,0,255), 3, CV_AA );else

13、 if( trackObject 0 &selection.height 0 )Mat roi(image, selection);bitwise_not(roi, roi);imshow( CamShift Demo, image ); imshow( Histogram, histimg );char c = (char)waitKey(10);if( c = 27 )break;switch(c)case b:backprojMode = !backprojMode; break;case c:trackObject = 0;histimg = Scalar:all(0); break;case h:showHist = !showHist;if( !showHist ) destroyWindow( Histogram );else namedWindow( Histogram, 1 );break;case p:paused = !paused;break;default:;return 0;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!