版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版四川省五金、交電、家電、化工產(chǎn)品購銷合同
- 2024版園林綠化工程承包合同-0
- 三位數(shù)除以兩位數(shù)綜合作業(yè)練習(xí)題大全附答案
- 舉一反三系列高考高中數(shù)學(xué)同步及復(fù)習(xí)資料人教A版必修2專題8.7 空間點(diǎn)、直線、平面之間的位置關(guān)系(重難點(diǎn)題型精講)(含答案及解析)
- 小學(xué)四年級數(shù)學(xué)三位數(shù)除以兩位數(shù)自我檢測口算題帶答案
- 設(shè)備維修保養(yǎng)合同
- 醫(yī)療設(shè)備器械銷售合同范本
- 2024年學(xué)校安全檔案管理制度模版(三篇)
- 河南省鄭州市中牟縣2025屆語文高三上期末教學(xué)質(zhì)量檢測模擬試題含解析
- 2025屆福建省福州永泰第一中學(xué)數(shù)學(xué)高三第一學(xué)期期末經(jīng)典模擬試題含解析
- 2023-2024學(xué)年小學(xué)信息科技五年級上冊3.1廣播火箭發(fā)射 教學(xué)設(shè)計(jì)川教版
- 人教版五年級上冊小數(shù)乘除法豎式計(jì)算題200道及答案
- DL-T5153-2014火力發(fā)電廠廠用電設(shè)計(jì)技術(shù)規(guī)程
- 中華民族共同體概論課件專家版4第四講 天下秩序與華夏共同體的演進(jìn)(夏商周時(shí)期)
- 抗美援朝抗美援朝
- 繪本分享《狐貍打獵人》
- 醫(yī)用耗材分類目錄 (低值 ╱ 高值)
- 關(guān)于學(xué)習(xí)考察氣象災(zāi)害防御立法工作的調(diào)研報(bào)告
- 煤礦機(jī)電運(yùn)輸安全技術(shù)措施匯總
- 2021省屬國有企業(yè)企業(yè)經(jīng)營業(yè)績考核實(shí)施方案
- 材料表征技術(shù)
評論
0/150
提交評論