OpenCV視窗繫結到MFC中用以顯示視訊或圖片資料
阿新 • • 發佈:2018-12-13
當使用MFC和OpenCV顯示圖片資料時,很多采用將Mat型別的圖片資料轉成CvvImage型別,然後在MFC的視窗中進行顯示,但是將面臨需要額外的標頭檔案CvvImage的問題。而將OpenCV的視窗與MFC中的圖片顯示控制元件進行繫結後就不需要CvvImage這個類了,同時有一個額外的好處是可以使用OpenCV的滑鼠點選事件了,具體流程如下:
首先在對話方塊標頭檔案中加入
CRect rect1;
然後在對話方塊的OnInitDialog()函式下加入:
//繫結視窗 CWnd *pWnd1 = GetDlgItem(IDC_STATIC);//CWnd是MFC視窗類的基類,提供了微軟基礎類庫中所有視窗類的基本功能。 pWnd1->GetClientRect(&rect1);//GetClientRect為獲得控制元件相自身的座標大小 namedWindow("src1", WINDOW_AUTOSIZE);//設定視窗名 HWND hWndl = (HWND)cvGetWindowHandle("src1");//hWnd 表示視窗控制代碼,獲取視窗控制代碼 HWND hParent1 = ::GetParent(hWndl);//GetParent函式一個指定子視窗的父視窗控制代碼 ::SetParent(hWndl, GetDlgItem(IDC_STATIC)->m_hWnd); ::ShowWindow(hParent1, SW_HIDE);//ShowWindow指定視窗中顯示
之後就可以隨心所欲的使用imshow()函數了,但是視窗名稱需要與之前設定的視窗名稱一致,本文需要使用imshow("src1",img);