OpenCV+MFC 打開文件並顯示在picture控件上


在校學生剛剛接觸OpenCV,用OpenCV和MFC創建對話框界面,基本功能:打開文件並在picture控件上顯示所選擇的圖片。因為我的是OpenCV3.0所以要自行添加CvvImage.h和CvvImage.cpp,方法教程網上有很多,這里不多說了,主要寫一下MFC的實現代碼,方便自己做一個記錄。

(1)按要求創建完一個對話框后如圖1所示

 

 

(2)顯示圖片的按鈕響應函數

 1 void CvirtualrealityDlg::OnBnClickedButtonShow()
 2 {
 3     CString m_strPicPath;
 4     IplImage* TheImage;
 5     CFileDialog dlg(true, _T("*.jpg"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
 6         _T("image file(*.jpg)||All Files(*.*)|*.*|"), NULL); //選項圖片的約定
 7     dlg.m_ofn.lpstrTitle = _T("open Image");                //打開文件對話框的標題名
 8     if (dlg.DoModal() != IDOK)                                //判斷是否獲得圖片
 9         return;
10     m_strPicPath = dlg.GetPathName();                        //獲得圖片路徑
11     m_strPicPath.Replace(_T("//"), _T("////"));
12 
13     TheImage = cvLoadImage((CT2CA)m_strPicPath, 1);            //讀取圖片、緩存到一個局部變量the image中
14 
15     if (TheImage)
16         ShowImage(TheImage, IDC_STATIC_SHOW);                //調用顯示圖片函數
17     else
18         return;
19         
20 
21 }
View Code

(3)其中調用的顯示圖片函數ShowImage()需要在頭文件中聲明,在源文件中聲明如下

 1 void CvirtualrealityDlg::ShowImage(IplImage* img, UINT ID)
 2 {    
 3     CDC* pDC = GetDlgItem(ID)->GetDC();                        //獲得顯示控件的DC
 4     HDC hDC = pDC->GetSafeHdc();                            //獲得HDC(設備句柄)來進行繪圖操作
 5     
 6     CRect rect;
 7     GetDlgItem(ID)->GetClientRect(&rect);
 8     
 9     SetRect(rect, rect.left, rect.top, rect.right, rect.bottom);
10     
11     CvvImage cimg;
12     cimg.CopyOf(img);                                        //復制圖片
13     cimg.DrawToHDC(hDC, &rect);                                //將圖片繪制到顯示控件的指定區域內
14     ReleaseDC(pDC);
15     
16 }
View Code

(4)再運行一下就可以了。

再來一張效果圖

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM