基于光流法的視頻中移動物體的標(biāo)識代碼_第1頁
基于光流法的視頻中移動物體的標(biāo)識代碼_第2頁
基于光流法的視頻中移動物體的標(biāo)識代碼_第3頁
基于光流法的視頻中移動物體的標(biāo)識代碼_第4頁
基于光流法的視頻中移動物體的標(biāo)識代碼_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、/-【程序說明】-/程序說明:OpenCV3編程入門OpenCV2版書本配套示例程序08/程序描述:來自O(shè)penCV安裝目錄下Samples文件夾中的官方示例程序-彩色目標(biāo)跟蹤操作/開發(fā)測試所用操作系統(tǒng): Windows 7 64bit/開發(fā)測試所用IDE版本:Visual Studio 2010/開發(fā)測試所用OpenCV版本:2.4.9/2014年11月 Revised by 淺墨_毛星云/-/-【頭文件、命名空間包含部分】-/描述:包含程序所使用的頭文件和命名空間/-#include "opencv2/video/tracking.hpp"#include "

2、opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include <iostream>#include <ctype.h>using namespace cv;using namespace std;/-【全局變量聲明】-/描述:聲明全局變量/-Mat image;bool backprojMode = false;bool selectObject = false;int trackObject = 0;bool showHist = true;Point

3、 origin;Rect selection;int vmin = 10, vmax = 256, smin = 30;/-【onMouse( )回調(diào)函數(shù)】-/描述:鼠標(biāo)操作回調(diào)/-static void onMouse( int event, int x, int y, int, void* )if( selectObject )selection.x = MIN(x, origin.x);selection.y = MIN(y, origin.y);selection.width = std:abs(x - origin.x);selection.height = std:abs(y -

4、origin.y);selection &= Rect(0, 0, image.cols, image.rows);switch( event )case CV_EVENT_LBUTTONDOWN:origin = Point(x,y);selection = Rect(x,y,0,0);selectObject = true;break;case CV_EVENT_LBUTTONUP:selectObject = false;if( selection.width > 0 && selection.height > 0 )trackObject = -1;

5、break;/-【help( )函數(shù)】-/描述:輸出幫助信息/-static void ShowHelpText()cout <<"nnttt非常感謝購買OpenCV3編程入門一書!n"<<"nnttt此為本書OpenCV2版的第8個(gè)配套示例程序n"<<"nnttt 當(dāng)前使用的OpenCV版本為:" << CV_VERSION <<"nn -" ;cout << "nnt此Demo顯示了基于均值漂移的追蹤(tracking)技術(shù)n&q

6、uot;"t請用鼠標(biāo)框選一個(gè)有顏色的物體,對它進(jìn)行追蹤操作n"cout << "nnt操作說明: n""tt用鼠標(biāo)框選對象來初始化跟蹤n""ttESC - 退出程序n""ttc - 停止追蹤n""ttb - 開/關(guān)-投影視圖n""tth - 顯示/隱藏-對象直方圖n""ttp - 暫停視頻n"const char* keys ="1| | 0 | camera number"/-【main( )函數(shù)】-/

7、描述:控制臺應(yīng)用程序的入口函數(shù),我們的程序從這里開始/-int main( int argc, const char* argv )ShowHelpText();VideoCapture cap;Rect trackWindow;int hsize = 16;float hranges = 0,180;const float* phranges = hranges;cap.open(0);if( !cap.isOpened() )cout << "不能初始化攝像頭n"namedWindow( "Histogram", 0 );namedWin

8、dow( "CamShift Demo", 0 );setMouseCallback( "CamShift Demo", onMouse, 0 );createTrackbar( "Vmin", "CamShift Demo", &vmin, 256, 0 );createTrackbar( "Vmax", "CamShift Demo", &vmax, 256, 0 );createTrackbar( "Smin", "CamS

9、hift Demo", &smin, 256, 0 );Mat frame, hsv, hue, mask, hist, histimg = Mat:zeros(200, 320, CV_8UC3), backproj;bool paused = false;for(;)if( !paused )cap >> frame;if( frame.empty() )break;frame.copyTo(image);if( !paused )cvtColor(image, hsv, COLOR_BGR2HSV);if( trackObject )int _vmin =

10、vmin, _vmax = vmax;inRange(hsv, Scalar(0, smin, MIN(_vmin,_vmax),Scalar(180, 256, MAX(_vmin, _vmax), mask);int ch = 0, 0;hue.create(hsv.size(), hsv.depth();mixChannels(&hsv, 1, &hue, 1, ch, 1);if( trackObject < 0 )Mat roi(hue, selection), maskroi(mask, selection);calcHist(&roi, 1, 0,

11、maskroi, hist, 1, &hsize, &phranges);normalize(hist, hist, 0, 255, CV_MINMAX);trackWindow = selection;trackObject = 1;histimg = Scalar:all(0);int binW = histimg.cols / hsize;Mat buf(1, hsize, CV_8UC3);for( int i = 0; i < hsize; i+ )buf.at<Vec3b>(i) = Vec3b(saturate_cast<uchar>

12、(i*180./hsize), 255, 255);cvtColor(buf, buf, CV_HSV2BGR);for( int i = 0; i < hsize; i+ )int val = saturate_cast<int>(hist.at<float>(i)*histimg.rows/255);rectangle( histimg, Point(i*binW,histimg.rows),Point(i+1)*binW,histimg.rows - val),Scalar(buf.at<Vec3b>(i), -1, 8 );calcBackPr

13、oject(&hue, 1, 0, hist, backproj, &phranges);backproj &= mask;RotatedRect trackBox = CamShift(backproj, trackWindow,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;trackW

14、indow = Rect(trackWindow.x - r, trackWindow.y - r,trackWindow.x + r, trackWindow.y + r) &Rect(0, 0, cols, rows);if( backprojMode )cvtColor( backproj, image, COLOR_GRAY2BGR );ellipse( image, trackBox, Scalar(0,0,255), 3, CV_AA );else if( trackObject < 0 )paused = false;if( selectObject &&a

15、mp; selection.width > 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':trackObj

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論