(一)問題的提出:
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