【C++ MFC+opencv】開啟資料夾中的圖片並在picture控制元件中顯示
阿新 • • 發佈:2019-02-14
void CmyImageDlg::OnBnClickedButtonImg() //對應button下的開啟檔案對話方塊的程式碼 { // TODO: 在此新增控制元件通知處理程式程式碼 CString m_strPicPath; //彈出選擇圖片對話方塊 CFileDialog dlg(true,_T("*.bmp"),NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,_T("image file(*.bmp;*.jpg)|*.bmp;*.jpg|All Files(*.*)|*.*|"),NULL); dlg.m_ofn.lpstrTitle = _T("Open Image");// 開啟檔案對話方塊的標題名 if( dlg.DoModal() != IDOK ) // 判斷是否獲得視訊 return; m_strPicPath = dlg.GetPathName(); //獲取圖片路徑 m_strPicPath.Replace(_T("//"),_T("////")); TheImage=cvLoadImage((CT2CA)m_strPicPath,1); //讀取彩色圖 Src = cvLoadImage((CT2CA)m_strPicPath,0); //讀取灰度圖片 if (TheImage != NULL) { ShowImage(TheImage, IDC_STATIC_PIC);; } } void CmyImageDlg::ShowImage(IplImage* img, UINT ID) //在picture控制元件中顯示圖片的程式碼 { CDC* pDC=GetDlgItem(ID)->GetDC(); HDC hDC=pDC->GetSafeHdc(); CRect rect; GetDlgItem(ID)->GetClientRect(&rect); SetRect(rect,rect.left,rect.top,rect.right,rect.bottom); CvvImage cimg; cimg.CopyOf( img ); // 複製圖片 cimg.DrawToHDC( hDC, &rect ); // 將圖片繪製到顯示控制元件的指定區域內 ReleaseDC( pDC ); }