天天看點

利用OpenCV和MFC對話框建設一個有滑動條控制的播放器--轉

(一)問題的提出:

OpenCV有一個很簡單的播放視訊檔案并加載滑動條的程式,但是如何用MFC對話框來建立一個有滑動條控制的播放器呢,網絡上四處搜尋都沒有代碼可以參考,下的都是些騙子連結檔案,很過分,一點參考價值都沒有,怎麼辦?

(二)解決的思路:

1.自己進行研究,不指望網絡有現成的餡餅,因為那裡多了去的陷阱,很可惡。

2.要解決的關鍵問題是slider滑動條控件如何與視訊播放實時結合在一起:

  ①主窗體的OnHScroll()響應函數負責響應slider滑動條的變化,這樣就輕松搞定slider控件與拖動滑動條動作與視訊播放的關聯。

  ②建立虛拟的slider執行個體和slider滑動位置的全局變量,通過資料交換函數予以關系綁定

  ③通過OpenCV的函數cvSetCaptureProperty()和slider滑動位置全局變量來确定指向視訊的哪個幀位置,并進行加載顯示到Picture控件中

(三)問題的解決:

1.編寫完了程式,在程式中添加了如下注釋代碼:

//////////////////////////////////////////////////////////////////////

// VideoPlayer

// Last modification: May 16, 2012

// 使用說明:

//   1. 安裝VS2008

//   2. 安裝OpenCV2.0

//   3. 安裝cmake2.8.6

//   4. 通過cmake生成可以被VC++ 2008調用的OpenCV動态庫

//   5. 配置Windows環境變量Path,将OpenCV2.0安裝後的bin檔案夾目錄添加入使用者變量

//      使得Path=.../bin

//      (...是OpenCV2.0安裝後的program files下的目錄全路徑)

//   6. 打開VC++ 2008,菜單中的工具→選項→項目和解決方案→VC++目錄

//      在顯示以下内容的目錄中,

//      先選中可執行檔案,加入目錄...\bin

//      再選中包含檔案,加入目錄...\include\opencv 

//      再選中庫檔案,加入目錄...\lib

//   7. 建立MFC對話框項目VideoPlayer

//      然後再在它的屬性裡去掉更換Unicode的字元集為多位元組集

//      配置連結器的輸入依賴項cxcore200.lib cv200.lib highgui200.lib

//   8. 或者是不進行7的操作,直接将本程式對建立的VideoPlayer對話框項目進行覆寫

//      然後再對其中的VideoPlayer對話框項目配置屬性進行修改

// 功能說明:

//   1. slider控件、Picture控件、打開按鈕、播放按鈕、暫停按鈕、停止按鈕

//   2. 實作視訊的加載、播放、暫停、停止,以及通過滑動條進行視訊播放進度的控制

// 存在的問題:

//   1. 有些視訊并不是有多少幀就多少幀結尾

//      比如用螢幕錄像機錄像的avi,比如錄了幀,它有時會丢幀,

//      丢幀的那個位置,無法用IplImage的圖像空間來加載視圖,那程式調試就會報錯

//   2. 基本的功能都實作了,就缺驗證它的執行效率,還有是否會存在記憶體洩漏

2.程式打包成VideoPlayer.rar(壓縮包内除了完整程式還包括了檔案cmake-2.8.6-win32-x86.exe和OpenCV-2.0.0a-win32.exe),放置到如下位置:

  解壓縮密碼為huangweilin

繼續閱讀