




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Opencv視頻教程Opencv結(jié)構(gòu)與內(nèi)容Opencv結(jié)構(gòu)cxcorecvMachine Learning(ML)HighGUIcvcamcvauxcxcore基礎(chǔ)結(jié)構(gòu):CvPoint,CvSize,CvScalar等數(shù)組操作:cvCreateImage,cvCreateMat等動態(tài)結(jié)構(gòu):CvMemStorage,CvMemBlock等繪圖函數(shù):cvLine,cvRectangle等數(shù)據(jù)保存和運行時類型信息:CvFileStorage,cvOpenFileStorage等錯誤處理和系統(tǒng)函數(shù):cvGetErrStatus,cvAlloc,cvFree等cv圖像處理:cvSobel,cvCanny
2、等結(jié)構(gòu)分析:ContourArea等運動分析與目標(biāo)跟蹤:cvMeanShift等模式識別:CvHaarFeature攝像頭定標(biāo)與三維重建:cvCalibrateCamer2Machine Learning(ML)包含許多聚類、分類和數(shù)據(jù)分析函數(shù)。如Bayes分類器,K近鄰算法,支持向量機(jī),決策樹,神經(jīng)網(wǎng)絡(luò)等等。HighGUI圖像界面函數(shù):cvNamedWindow讀圖像和保存圖像:cvLoadImage,cvSaveImage讀視頻和寫視頻:CvCreateFileCapture等cvcam攝像機(jī)接口,在Opencv1.0以后的版本中已經(jīng)被移除cvaux該模塊中一般存放一些即將被淘汰的算法和函
3、數(shù)(如基于嵌入式隱馬爾科夫的人臉識別算法),還包含一些實驗性的算法和函數(shù)(前景檢測,背景剔除等)Opencv的結(jié)構(gòu)Opencv視頻教程顯示圖像第一個程序:顯示圖像基于Opencv,我們可以讀取各種圖像文件,視頻文件,還可以讀取攝像頭。這些功能是Opencv開發(fā)包中HighGUI工具集的一部分。下面,我們就使用其中的一些功能來實現(xiàn)如何顯示一幅圖像。顯示圖像代碼#include highgui.hint main(int argc, char* argv)IplImage* src = cvLoadImage(F:psbCA2V1GZ7.jpg , 1);cvNamedWindow(show_im
4、age);cvShowImage(show_image,src);cvWaitKey(0);return 0;cvLoadImage(char* filename,int flags=CV_LOAD_IMAGE_COLOR)Filename:圖像所在路徑Flags:/* 圖像顏色不變 */#define CV_LOAD_IMAGE_UNCHANGED -1/*灰度圖像(單通道) */#define CV_LOAD_IMAGE_GRAYSCALE 0/* 彩色圖像(3通道圖像) */#define CV_LOAD_IMAGE_COLOR 1cvLoadImage參數(shù)說明Flags:/*則輸入圖像
5、格式可以為8位無符號,16位無符號,32位有符號或者32位浮點型 */ #define CV_LOAD_IMAGE_ANYDEPTH 2/* 保持原樣 */#define CV_LOAD_IMAGE_ANYCOLOR 4cvLoadImage參數(shù)說明如果想要載入最真實的圖像,選擇CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR 如果輸入有沖突的標(biāo)志,將采用較小的數(shù)字值。比如CV_LOAD_IMAGE_GRAYSCALE | CV_LOAD_IMAGE_COLOR將載入單通道圖。 cvLoadImage的功能通過文件名確定被加載圖像的格式,并且該函數(shù)
6、在內(nèi)部分配圖像數(shù)據(jù)結(jié)構(gòu)所需要的內(nèi)存空間。支持的圖像格式:BMP,DIB,JPEG,JPE,PNG,PBM,PGM,PPM,SR,RAS,TIFF。Int cvNamedWindow(char*name,int flagsname:窗口的標(biāo)志。如果已經(jīng)有同名窗口,則該函數(shù)什么也不干。Flags:CV_WINDOW_AUTOSIZE ,會根據(jù)圖像大小自動調(diào)整窗口大小。如果是0,則窗口大小不變。cvShowImage(char* name,IplImage* dst)功能:在指定窗口上顯示圖像。name:窗口的標(biāo)志。這個標(biāo)志是cvNamedWindow函數(shù)設(shè)定的。dst:被顯示的圖像。Int cvW
7、aitKey(int key)Key:如果key的值是大于0的數(shù),那么該函數(shù)的功能是,在此處暫停key毫秒。如果是小于等于0的數(shù),那么,該函數(shù)是在等待用戶的按鍵輸入。cvReleaseImage(IplImage* src)釋放圖像空間。cvDestroyWindow(char* name)注銷一個窗口。同時釋放為該窗口所分配的所有內(nèi)存(包括窗口內(nèi)部的圖像內(nèi)存緩沖區(qū))Opencv視頻教程Opencv讀取視頻Opencv讀取視頻代碼#include highgui.hint main(int argc, char* argv)cvNamedWindow(avi);CvCapture* captu
8、re = cvCreateFileCapture(“視頻文件路徑);IplImage* frame;while(1)frame = cvQueryFrame(capture);if(!frame)break;cvShowImage(avi,frame);char c = cvWaitKey(33);if(c=27)break;cvReleaseCapture(&capture);cvDestroyWindow(avi);return 0;結(jié)構(gòu)體CvCaptureCvCapture 是一個結(jié)構(gòu)體,用來保存圖像捕獲所需要的信息。 opencv提供兩種方式從外部捕獲圖像一種是從攝像頭中,一種是通過解
9、碼視頻得到圖像。 兩種方式都必須從第一幀開始一幀一幀的按順序獲取,因此每獲取一幀后都要保存相應(yīng)的狀態(tài)和參數(shù)。 比如從視頻文件中獲取,需要保存視頻文件的文件名,相應(yīng)的解碼器類型,下一次如果要獲取將需要解碼哪一幀等。 這些信息都保存在CvCapture結(jié)構(gòu)中,每獲取一幀后,這些信息都將被更新,獲取下一幀需要將新信息傳給獲取的api接口cvCreateFileCapture(char*name)通過輸入要讀取的avi文件的路徑,然后,該函數(shù)返回一個指向CvCapture結(jié)構(gòu)體的指針。cvQueryFrame(capture)輸入一個CvCapture類型的指針,該函數(shù)主要功能是將視頻文件的下一幀加載
10、到內(nèi)存。與cvLoadImage的不同之處是,該函數(shù)不重新分配內(nèi)存空間。C=cvWaitKey(33)當(dāng)前幀被顯示后,等待33毫秒。如果用戶觸發(fā)了一個按鍵,c會被設(shè)置成這個按鍵的ASCII碼,否則會被設(shè)置成-1。cvWaitKey(33)在此處的另外一個作用是,控制幀率。cvReleaseCapture(&capture)釋放為CvCapture結(jié)構(gòu)體開辟的內(nèi)存空間關(guān)閉打開的AVI文件相關(guān)的文件句柄讀取攝像頭只需把cvCreateFileCapture改成cvCreateCameraCapture即可。該函數(shù)的輸入?yún)?shù)是一個ID號,只有存在多個攝像頭時才起作用。當(dāng)ID=-1時,表示隨機(jī)選擇一個
11、。HighGUI做了很多工作,使得攝像機(jī)圖像序列像一個視頻文件一樣。在第4章,會有更詳細(xì)的介紹。總結(jié)常見問題(1)視頻文件路徑?jīng)]寫對(2)沒有安裝解碼器(3)如果使用的是Opencv2.0或更高版本,那么,能否正確加載opencv_ffmpeg210.dll(4)盡管是AVI文件,但也可能使用了某種codec,例如:MJPEG Decompressor。 需要把它轉(zhuǎn)換OpenCV支持的AVI文件. OpenCV支持的AVI。例如使用貍窩全能視頻轉(zhuǎn)換器,在預(yù)置方案處,選擇AVI-Audio_Video Interleaved(*.avi)?;蛘呤褂酶袷焦S也可以。(5)讀攝像頭數(shù)據(jù),需要安裝與攝
12、像頭相應(yīng)的驅(qū)動程序。Opencv視頻教程視頻播放控制獲取攝像頭屬性的函數(shù)double cvGetCaptureProperty( CvCapture* capture, int property_id ) CV_CAP_PROP_POS_MSEC - 影片目前位置,為毫秒數(shù)或者視頻獲取時間戳CV_CAP_PROP_POS_FRAMES - 將被下一步解壓/獲取的幀索引,以0為起點CV_CAP_PROP_POS_AVI_RATIO - 視頻文件的相對位置(0 - 影片的開始,1 - 影片的結(jié)尾)CV_CAP_PROP_FRAME_WIDTH - 視頻流中的幀寬度CV_CAP_PROP_FRAME
13、_HEIGHT - 視頻流中的幀高度CV_CAP_PROP_FPS - 幀率CV_CAP_PROP_FOURCC - 表示codec的四個字符CV_CAP_PROP_FRAME_COUNT - 視頻文件中幀的總數(shù) 一個bug有時候函數(shù)cvGetCaptureProperty在cvQueryFrame被調(diào)用一次后,再調(diào)用cvGetCaptureProperty才會返回正確的數(shù)值。這是一個bug,建議在調(diào)用此函數(shù)前先調(diào)用cvQueryFrame。 設(shè)置攝像頭屬性的函數(shù)int cvSetCaptureProperty( CvCapture* capture, int property_id, dou
14、ble value );capture 視頻獲取結(jié)構(gòu)。property_id 屬性標(biāo)識符??梢允窍旅嬷唬篊V_CAP_PROP_POS_MSEC - 從文件開始的位置,單位為毫秒CV_CAP_PROP_POS_FRAMES - 單位為幀數(shù)的位置(只對視頻文件有效)CV_CAP_PROP_POS_AVI_RATIO - 視頻文件的相對位置(0 - 影片的開始,1 - 影片的結(jié)尾)CV_CAP_PROP_FRAME_WIDTH - 視頻流的幀寬度(只對攝像頭有效)CV_CAP_PROP_FRAME_HEIGHT - 視頻流的幀高度(只對攝像頭有效)CV_CAP_PROP_FPS - 幀率(只對攝
15、像頭有效)CV_CAP_PROP_FOURCC - 表示codec的四個字符(只對攝像頭有效)value 屬性的值。函數(shù)cvSetCaptureProperty設(shè)置指定視頻獲取的屬性。目前這個函數(shù)對視頻文件只支持: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO 創(chuàng)建滾動條該函數(shù)為開放計算機(jī)視覺(OpenCV)庫庫函數(shù),創(chuàng)建trackbar并將它添加到指定的窗口。定義:CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) );int cvC
16、reateTrackbar( const char* trackbar_name, const char* window_name, int* value, int count, CvTrackbarCallback on_change ); 創(chuàng)建滾動條參數(shù):trackbar_name被創(chuàng)建的trackbar名字。window_name窗口名字,這個窗口將為被創(chuàng)建trackbar的父對象。value整數(shù)指針,它的值將反映滑塊的位置。這個變量指定創(chuàng)建時的滑塊位置。count滑塊位置的最大值。最小值一直是0。on_change每次滑塊位置被改變的時候,被調(diào)用函數(shù)的指針。這個函數(shù)應(yīng)該被聲明為void
17、 Foo(int); 如果沒有回調(diào)函數(shù),這個值可以設(shè)為NULL。函數(shù)cvCreateTrackbar用指定的名字和范圍來創(chuàng)建trackbar(滑塊或者范圍控制),指定與trackbar位置同步的變量,并且指定當(dāng)trackbar位置被改變的時候調(diào)用的回調(diào)函數(shù)。被創(chuàng)建的trackbar默認(rèn)顯示在指定窗口的頂端,可以通過函數(shù)cvGetTrackbarPos來獲取trackbar顯示的位置信息,以及通過函數(shù)cvSetTrackbarPos來重新設(shè)置trackbar的顯示位置。 回調(diào)函數(shù)回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當(dāng)這個指針被用為調(diào)用它所指
18、向的函數(shù)時,我們就說這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用的,用于對該事件或條件進(jìn)行響應(yīng)。 Opencv視頻教程Opencv寫視頻文件Opencv寫視頻文件核心函數(shù)cvCreateVideoWritercvWriteFramecvReleaseVideoWritercvCreateVideoWritercvCreateVideoWriter (const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 ); filename:指定新建視頻
19、的文件名字。fourcc:視頻壓縮的編碼格式,目前有多種流行的編解碼格式,但無論采用哪種格式,都必須確認(rèn)自己的電腦上安裝了這種格式(編解碼器的安裝是獨立于opencv的)。fps:幀率,在第4集中有介紹。frame_size:視頻幀的大小。is_color:如果非零,編 碼器將希望得到彩色幀并進(jìn)行編碼 ,否則,是灰度幀 cvWriteFrame功能:把一幀圖像寫入到視頻文件cvReleaseVideoWriter釋放視頻寫入設(shè)備,如果不釋放,會導(dǎo)致寫視頻失敗,所以一定要記得釋放。Opencv視頻教程Opencv基本數(shù)據(jù)結(jié)構(gòu)Opencv基本數(shù)據(jù)結(jié)構(gòu)cxcore/include/cxtypes.h
20、CvPoint系列CvSize系列CvSizeCvRectCvScalarCvArrCvPoint系列CvPoint:表示圖像中的點(見示意圖)CvPoint2D32f:二維空間中的點CvPoint3D32f:三維空間中的點構(gòu)造函數(shù):cvPointXXXX( )。注意,這是c風(fēng)格的代碼,構(gòu)造函數(shù)是內(nèi)聯(lián)函數(shù),并不是c+中的類的構(gòu)造函數(shù)一樣。CvSize系列CvSize:圖像的尺寸CvSize2D32f:如果想用浮點型。CvRect可以用來表示圖像的部分區(qū)域(示意圖)CvScalar包含4個浮點成員,可以用來表示表示B,G,R,alpha。(示意圖)有三個構(gòu)造函數(shù):cvScalar,cvRealScalar,cvScalarAllCvArrCvArr雖然Opencv1.0是大部分是由C語言完成,但是他使用的結(jié)構(gòu)也是遵循面向?qū)ο蟮乃枷氲摹vMat與IplImage的關(guān)系就如同C+中的繼承關(guān)系,IplImage可以視為從CvMat派生的。CvArr可以視為抽象類。(例子展示)Opencv視頻教程CvMat結(jié)構(gòu)體
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 津滋陳列協(xié)議書
- 商業(yè)空間設(shè)計與施工配合合同
- 研發(fā)團(tuán)隊建設(shè)培訓(xùn)
- 道路標(biāo)牌采購合同協(xié)議
- 路由器項目合同協(xié)議
- 汽車包月協(xié)議書
- 車子抵押開走合同協(xié)議
- 熱浸鍍鋅協(xié)議書
- 潮安離婚協(xié)議書
- 郵政快遞保密協(xié)議合同書
- 學(xué)校餐飲服務(wù)應(yīng)急預(yù)案
- 高強(qiáng)泵送混凝土應(yīng)用技術(shù)標(biāo)準(zhǔn) DG-TJ08-503-2018
- 2024版建筑工程項目制度《開工、停工、復(fù)工管理辦法》+附表模板
- 2024年新《公司法》亮點解讀
- DB62-T 3256-2023 屈曲約束支撐-混凝土框架結(jié)構(gòu)設(shè)計規(guī)程
- 化學(xué)分析與定性分析的基本原理與方法
- 資本論導(dǎo)讀復(fù)習(xí)題
- 政府信息公開申請表(樣表)
- 《數(shù)字媒體藝術(shù)設(shè)計》專業(yè)群建設(shè)方案
- 詳解2023年全國組織工作會議精神專題PPT
- 滅火器定期檢查記錄表
評論
0/150
提交評論