


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、在參加騰訊校園之星大賽中做了一些手勢識別的插件,其中需要使用Ope nC相關(guān)的東西,今天將它整理一下,希望對其他人能有所幫助。首先, OpenCV 2.1似乎不能獲取設(shè)想設(shè)備的數(shù)目,名稱以及其它相關(guān)屬性,在 實(shí)際應(yīng)用中很不方便,為了解決這個問題,OpenC論壇上YuShiQi老師給出了一個風(fēng)轉(zhuǎn)好的CameraDS類,通過Directshow來調(diào)用攝像頭(詳情請見 使用 DirectShow 采集圖像 ),不過,這 個類只在VC+6.0編譯下通過,對于VS2005 2008和2010,需要做相應(yīng)的設(shè)置, 如下:1、在CameraDS.h包含頭文件之上預(yù)先定義加入如下代碼 #define POIN
2、TER_64 _ptr642、將 project ->Property-> c+ ->general->Additional Include Directories的 DirectShow/IncludeDirectories->include挪到 tools->options->project and solutions->vc+files 的文件末尾就可以了,當(dāng)然也可以換成絕對目錄。問題解決后,就可以在vs2005,vs2008 上編譯該工程了其次,捕捉到了視頻,還需要將它顯示在Image控件上,這里就沒有OpenCVl身所使用的 UI 控件
3、那么方便了,需要自己定義 Timer 函數(shù)來重復(fù)調(diào)用,過程如 下:/ 打開該攝像頭之前, 因先檢查之前是否在進(jìn)行圖像捕捉, 若有, 關(guān)閉 ReleaseCapture();/ 打開攝像頭if(!camera.OpenCamera(sgCurSelCameraIndex,false,FRAME_WIDTH,FRAME_HEI GHT)/這里使用CameraDS的方法打開攝像頭MessageBox(_T("打開視頻設(shè)備"+sgCameraName+失敗,請檢查 設(shè)備狀態(tài) "),_T("SmartGesture 插件信息 "), MB_OK | MB
4、_ICONEXCLAMATION);SetTimer(status,30,NULL);/ 關(guān)鍵是這里,需要自己定義 Timer 函數(shù)去 反復(fù)讀取圖像并將它顯示出來,處理的代碼會在On Timer函數(shù)中出現(xiàn)SetTimer函數(shù)第一個參數(shù)是Timer的標(biāo)識ID,也就是下面出現(xiàn)的nIDEvent。可 以根據(jù)不同的ID調(diào)用不同的On Timer函數(shù),第二個參數(shù)是調(diào)用的時間間隔,單 位是ms,第三個回調(diào)函數(shù),這里在下面的 On Timer函數(shù)中定義。接下來再來看 On Timer 函數(shù):/ 定時器,用于定期查詢攝像頭并獲得相應(yīng)的幀并進(jìn)行處理void SmartGestureDlg:OnTimer(UIN
5、T_PTR nIDEvent)/ TODO: 在此添加消息處理程序代碼和 / 或調(diào)用默認(rèn)值sgFrame = camera.QueryFrame();/ 從攝像頭獲得 IplImage 類型的圖片/ 依據(jù)事件類型對捕捉的圖像進(jìn)行不同的處理switch (nIDEvent)case SG_NORMAL: / 正常捕捉狀態(tài)下對幀不做處理 cvFlip(sgFrame,sgFrame,1);break;case SG_TRACING: / 跟蹤狀態(tài)SGTrace(sgFrame); / 跟蹤狀態(tài)下對幀進(jìn)行追蹤處理 break;case SG_SETTING: / 設(shè)置狀態(tài)SGSet(sgFrame)
6、; / 設(shè)置狀態(tài)下對圖像進(jìn)行設(shè)置處理 break;/將Ipllmage類型的圖片轉(zhuǎn)換成MFC能顯示的圖片格式,其中sgImage 的聲明為: CvvImage sgImage,sgFrame 的聲明為 IplImage*sgImage.CopyOf(sgFrame,3);/ 指定繪圖所需的 Picture 控件HDC sgIDCPicture =(GetDlgltem(IDC_FRAME)->GetDC()->GetSafeHdc();/ 從 MFC的界面上獲取 Image 控件,控件 ID 為 IDC_FRAMECRect rect; GetDlgItem(IDC_FRAME)-
7、>GetClientRect(&rect);/將圖片顯示到MFC的Picture 控件上 sgImage.DrawToHDC(sgIDCPicture,&rect);:ReleaseDC(this->m_hWnd,sgIDCPicture);/ 一定要記住釋放 DC,_super:OnTimer(nIDEvent);/ 重新調(diào)用 OnTimer 函數(shù)否則會造成內(nèi)存泄露另外需要注意,如果有多個狀態(tài)并調(diào)用了多個 OnTimer 函數(shù),在狀態(tài)轉(zhuǎn)變的時候, 或者是重新打開攝像頭的時候,一定記住要 Kill 掉之前的 Timer ,否則會造成 畫面的閃爍,之后導(dǎo)致應(yīng)用假死。如果不能有效的記錄 Timer 的 ID ,那就一次 將所有的 Timer 全部 Kill ,然后重新調(diào)用,如下:/ 退出插件之前需要釋放相應(yīng)的資源void SmartGestureDlg:ReleaseCapture()for (int i = 0; i < TEMPLATE_COUNT; i+)KillTimer(i);camera.CloseCamera();最后稍微提一下,使用CameraDSS取到的視頻圖像時Imllmage類型的,這個可 以使用OpenCV的函數(shù)處理,在顯示的時候,使用的是Cvvlmage類型的,需要注 意,可以在類中定義一個
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司借款合同簡單版樣書6篇
- 2025年合同法中的解除權(quán)分析與
- 鐵礦礦山開采承包合同樣本(18篇)
- 2025年金融服務(wù)保證合同模板
- 機(jī)械設(shè)備銷售協(xié)議模板模板協(xié)議模板合同6篇
- 2025年標(biāo)準(zhǔn)家裝設(shè)計(jì)合同文本
- 2025年養(yǎng)護(hù)清潔員工勞動合同模板
- 2025年項(xiàng)目經(jīng)理聘請合同范本
- 2025寫字間購買合同
- 創(chuàng)業(yè)合伙人合同范本
- 2024年貴州省公務(wù)員錄用考試《行測》真題及答案解析
- 2024年買房傭金返傭協(xié)議書模板
- 運(yùn)輸企業(yè)消防應(yīng)急救援預(yù)案
- 互聯(lián)網(wǎng)智慧食安大數(shù)據(jù)解決方案
- 《現(xiàn)代家政導(dǎo)論》電子教案 3.1模塊三項(xiàng)目一現(xiàn)代家庭生活認(rèn)知
- 南航集團(tuán)招聘筆試題庫2024
- 中級消防設(shè)施操作員證培訓(xùn)項(xiàng)目服務(wù)方案
- 自考15040習(xí)新時代思想概論高頻備考復(fù)習(xí)重點(diǎn)
- 《質(zhì)數(shù)與合數(shù)》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年五年級下冊數(shù)學(xué)人教版
- 精神障礙診療規(guī)范(2020-年版)-人格-現(xiàn)實(shí)解體障礙
- 污水處理及中水回用工程可行性研究報告書
評論
0/150
提交評論