1. 程式人生 > >OpenCV視窗繫結到MFC中用以顯示視訊或圖片資料

OpenCV視窗繫結到MFC中用以顯示視訊或圖片資料

當使用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);