




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、/-【程序說明】-/程序說明:OpenCV3編程入門OpenCV2版書本配套示例程序08/程序描述:來自O(shè)penCV安裝目錄下Samples文件夾中的官方示例程序-彩色目標跟蹤操作/開發(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ù)】-/描述:鼠標操作回調(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個配套示例程序n"<<"nnttt 當(dāng)前使用的OpenCV版本為:" << CV_VERSION <<"nn -" ;cout << "nnt此Demo顯示了基于均值漂移的追蹤(tracking)技術(shù)n&q
6、uot;"t請用鼠標框選一個有顏色的物體,對它進行追蹤操作n"cout << "nnt操作說明: n""tt用鼠標框選對象來初始化跟蹤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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 用戶流失分析與留存策略考核試卷
- 數(shù)據(jù)挖掘技術(shù)支持培訓(xùn)課程進度個性化調(diào)整考核試卷
- 冷卻系統(tǒng)故障處理技巧考核試卷
- 公共設(shè)施文化在社區(qū)心理健康促進中的應(yīng)用考核試卷
- 招商銀行面試題及答案
- 貴陽統(tǒng)招面試題及答案
- 方劑題庫考試題及答案
- 新疆考二建考試試題及答案
- 統(tǒng)一大市場的供應(yīng)鏈優(yōu)化
- 綠色供應(yīng)鏈構(gòu)建與統(tǒng)一大市場
- 《廣播電視概論》考試復(fù)習(xí)題庫(200題)
- 配電室巡檢記錄表
- 卓越績效評價準則概述(專業(yè)性權(quán)威性實用性)
- GB/T 30142-2013平面型電磁屏蔽材料屏蔽效能測量方法
- GB/T 29894-2013木材鑒別方法通則
- 國資進場交易工作流程講座
- 當(dāng)代法律英語翻譯全
- 制冷操作證培訓(xùn)教材制冷與空調(diào)設(shè)備運行操作作業(yè)培訓(xùn)教程課件
- 湖南省長沙市望城區(qū)2020-2021學(xué)年八年級下學(xué)期期末考試歷史試卷
- 煙葉烘烤調(diào)制理論考試試題
- DB23-T 3336-2022懸掛式單軌交通技術(shù)標準-(高清最新)
評論
0/150
提交評論