如何使用MFC結合opencv實現影片撥放/暫停_亂碼解決x計時器響應函數設置_完成最終功能計畫暫緩_part2

我們在上一節發現

預設路徑有亂碼顯示的瑕疵




這該如何解決呢???



原因在於   陣列未初始化為0






好 打開是打開了   要如何顯示呢???

這裡呢  首先我們是在  Image成員上做顯示


他是被定義在   VideoInfo.h的地方


在使用前  先清空吧




cvZero();是讓矩陣的值都為0,有初始化的作用,或者說清零



Ex:

IplImage img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);//創建一幅圖像
cvZero(img) ;//相當於初始化圖片,值都為0矩陣大小為640*480 




之後我們要用到  計時器


主要分作兩部分:

(1)去開啟計時器

(2)去響應計時器



//我們是可以在程式中定義多個計時器的!!!! 所以會用ID來做區分

SetTimer(1,10,NULL);
//這裡第三個參數直接設置為空 會直接對應CMFC_opencv_testDlg (此Dlg類)

//SetTimer(ID,時間是隔多少毫秒來觸發此事件,所屬的窗口指標);


再來設置響應函數

這裡我們要先開啟  「類別檢視」 好方便我們找尋 並設置對應的 響應函數


由於我們這個Dlg 需要去對這個'計時器訊息產生響應

旁邊我們就去找尋Dlg



選擇WM_TIMER
給他創建一個  響應函數





我們是要針對該ID進行事件處理

if.....



要顯示  怎麼可以沒有 picture 相關對應的 控建呢!!???


快去拉一個吧


其實有遇到一個窘境


我要怎麼回去   原本可視化 較為人性的視窗UI設計界面

這時  請你到右側  「方案總管」  找  「資源檔」


picture Control 是你最佳的選擇


來設置一下屬性好了

改個ID 好辨別

回至 MFC_opencv_testDlg.h


我們在把圖像繪製到PictureControl上

需要有個 「繪製句柄」 HDC

HDC:Handle for Device Contextmfc


還有相關變量的宣告



再來我們去   MFC_opencv_testDlg.cpp




切至 OnInitDialog 中  做初始化

屬性獲得窗口指標

我們的HDC  根據 PictureControl的ID號即可獲得



這裡遇到一個瓶頸  目前沒辦法使專案繼續完工

就是 不知為何  他讀不到我剛剛PictureControl 的 ID

實在納悶



目前 我們在MFC上opencv的配置  先 暫緩


改一個框架及平台試試看


在下一篇  會介紹到  Qt 這個著名的C++ 可視化開發平台

與 Visual C++  相比 Qt 簡單方便、功能完善、跨平台擴展能力強。

可用於嵌入式開發。



============================================================

MFC上 opencv配置  參考到了  opencv china 龐鋒老師的youku線上教程

视频: Opencv MFC第4节 MFC界面显示视频_标清

http://v.youku.com/v_show/id_XODE2ODM2MjI4.html?from=s1.8-1-1.2


這裡  我思考一下問題

opencv  在當時  它們還在教 第一代  opencv  具有指標的版本

且 這是很久以前的教學

如今opencv 都已經出自  第三代 所以判定不宜作為   視窗的開發。




留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題