opencv的典型基础应用例子(附源码和解释)_第1页
opencv的典型基础应用例子(附源码和解释)_第2页
opencv的典型基础应用例子(附源码和解释)_第3页
opencv的典型基础应用例子(附源码和解释)_第4页
opencv的典型基础应用例子(附源码和解释)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、opencv的典型基础应例(附源码和解释)2.1-1彩标追踪: Camshiftint vmin = 10, vmax = 256, smin = 30;/ User draws box around object to track. This triggers CAMShift to start trackingstatic void onMouse(int event, int x, int y, int, void*)if (selectObject)switch (event)case EVENT_LBUTTONDOWN:origin = Point(x, y);selection =

2、 Rect(x, y, 0, 0);selectObject = true;break;case EVENT_LBUTTONUP:selectObject = false;if (selection.width 0 & selection.height 0)trackObject = -1; / Set up CAMShift properties in main() loopbreak;tb - switch to/from backprojection viewnth - show/hide object histogramntp - pause videonTo initialize t

3、racking, select the object with mousen;static void help(const char* argv)static void help(const char* argv)cout nThis is a demo that shows mean-shift based trackingnThis reads from video camera (0 by default, or the camera number the user entersncout argv0 camera numbern;help h | | show help message

4、camera_number| 0 | camera number;int main(int argc, const char* argv)if (!cap.isOpened()help(argv);return -1;cout frame;if (frame.empty()int _vmin = vmin, _vmax = vmax;histimg = Scalar:all(0);for (int i = 0; i hsize; i+)for (int i = 0; i hsize; i+)int val = saturate_cast(hist.at(i) * histimg.rows /

5、255);rectangle(histimg, Point(i * binW, histimg.rows),Point(i + 1) * binW, histimg.rows - val),Scalar(buf.at(i), -1, 8);/ Perform CAMShiftint cols = backproj.cols, rows = backproj.rows, r = (MIN(cols, rows) + 5) / 6;trackWindow = Rect(trackWindow.x - r, trackWindow.y - r,trackWindow.x + r, trackWind

6、ow.y + r) &Rect(0, 0, cols, rows);if (backprojMode)cvtColor(backproj, image, COLOR_GRAY2BGR);ellipse(image, trackBox, Scalar(0, 0, 255), 3, LINE_AA);case c:elsedefault:;return 0;法:根据标框选区域的度光谱来进摄像头读的视频标的跟踪算法:Camshift算法(被称为:连续适应的MeanShift算法)2.1-2 光流 optical flow前图像分析的重要法光流来表图像中模式的运动速度2.1-3 点追踪 lkdemot

7、r - auto-initialize trackingntc - delete all the pointsntn - switch the night mode on/offntn - switch the night mode on/offnstatic void onMouse( int event, int x, int y, int /*flags*/, void* /*param*/ )if( event = EVENT_LBUTTONDOWN )help();if( input.size() = 1 & isdigit(input0) )cap.open(input0 - 0)

8、;elsecap.open(input);if( !cap.isOpened() )cout Could not initialize capturing.n;namedWindow( LK Demo, 1 );setMouseCallback( LK Demo, onMouse, 0 );Mat gray, prevGray, image, frame;vector points2;for(;)frame.copyTo(image);cvtColor(image, gray, COLOR_BGR2GRAY);goodFeaturesToTrack(gray, points1, MAX_COU

9、NT, 0.01, 10, Mat(), 3, 3, 0, 0.04);cornerSubPix(gray, points1, subPixWinSize, Size(-1,-1), termcrit);for( i = k = 0; i points1.size(); i+ )circle( image, points1i, 3, Scalar(0,255,0), -1, 8);if( addRemovePt & points1.size() (size_t)MAX_COUNT )cornerSubPix( gray, tmp, winSize, Size(-1,-1), termcrit)

10、;points1.push_back(tmp0);addRemovePt = false;needToInit = false;imshow(LK Demo, image);char c = (char)waitKey(10);case r:case c:case n:std:swap(points1, points0);cv:swap(prevGray, gray);使说明:按r启动动点追踪2.1-4脸识别 objectDetectionint main( int argc, const char* argv )CommandLineParser parser(argc, argv,help

11、 h|face_cascade|data/haarcascades/haarcascade_frontalface_alt.xml|Path to face cascade.parser.about( nThis program demonstrates using the cv:CascadeClassifier class to detect objects (Face + eyes) in a video stream.nYou can use Haar or LBP features.nn );parser.printMessage();String face_cascade_name

12、 = samples:findFile( parser.get(face_cascade) );String eyes_cascade_name = samples:findFile( parser.get(eyes_cascade) );/- 1. Load the cascadesif( !face_cascade.load( face_cascade_name ) )cout -(!)Error loading face cascaden;return -1;if( !eyes_cascade.load( eyes_cascade_name ) )cout -(!)Error loadi

13、ng eyes cascaden;int camera_device = parser.get(camera);VideoCapture capture;/- 2. Read the video streamcapture.open( camera_device );if ( ! capture.isOpened() )Mat frame;cout -(!) No captured frame - Break!n;break;/- 3. Apply the classifier to the framedetectAndDisplay( frame );/* function detectAn

14、dDisplay */void detectAndDisplay( Mat frame )for ( size_t i = 0; i faces.size(); i+ )Point center( facesi.x + facesi.width/2, facesi.y + facesi.height/2 );ellipse( frame, center, Size( facesi.width/2, facesi.height/2 ), 0, 0, 360, Scalar( 255, 0, 255 ), 4 );Mat faceROI = frame_gray( facesi );/- In each face, detect eyesstd:vector eyes;eyes_cascade.detectMultiScale( faceROI, eyes );for ( size_t j = 0; j eyes.size(); j+ )Point eye_center( facesi.x + eyesj.x + eyes

温馨提示

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

评论

0/150

提交评论