opencv的典型基礎(chǔ)應(yīng)用例子(附源碼和解釋)_第1頁
opencv的典型基礎(chǔ)應(yīng)用例子(附源碼和解釋)_第2頁
opencv的典型基礎(chǔ)應(yīng)用例子(附源碼和解釋)_第3頁
opencv的典型基礎(chǔ)應(yīng)用例子(附源碼和解釋)_第4頁
opencv的典型基礎(chǔ)應(yīng)用例子(附源碼和解釋)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、opencv的典型基礎(chǔ)應(yīng)例(附源碼和解釋)2.1-1彩標(biāo)追蹤: 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;法:根據(jù)標(biāo)框選區(qū)域的度光譜來進(jìn)攝像頭讀的視頻標(biāo)的跟蹤算法:Camshift算法(被稱為:連續(xù)適應(yīng)的MeanShift算法)2.1-2 光流 optical flow前圖像分析的重要法光流來表圖像中模式的運(yùn)動(dòng)速度2.1-3 點(diǎn)追蹤 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啟動(dòng)動(dòng)點(diǎn)追蹤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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論