1. 程式人生 > >【C++ MFC+opencv】開啟資料夾中的圖片並在picture控制元件中顯示

【C++ MFC+opencv】開啟資料夾中的圖片並在picture控制元件中顯示

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 );
}