OPENCV筆記(二)開啟檔案夾讀取圖片_OpenCV學習筆記

來源:互聯網
上載者:User

OPENCV筆記都是記錄MFC下做影像處理的項目時,遇到的問題,留此部落格以備記錄。


本文主要是需要開啟一個對話方塊,手動選取圖片,顯示在MFC的picture control上。關於在程式中使用絕對路徑讀取圖片的代碼,這裡直接給出,不做過多的說明了。

OpenCV使用絕對路徑讀取圖片:

void CMyDlg::OnBnClickedBtnloadimg(){// TODO:  在此添加控制項通知處理常式代碼IplImage *SrcImg;SrcImg = cvLoadImage("c:\\users\\administrator\\desktop\\1.jpg");//使用絕對路徑讀取圖片//SrcImg = cvLoadImage(".\\1.jpg"); //表示從當前檔案夾下讀取if (!SrcImg->imageData){AfxMessageBox("cvLoadImage() err");//使用多位元組字元集//AfxMessageBox(_T("cvLoadImage() err")); //使用Unicode字元集}if (SrcImg->nChannels != 1)//如果不是灰階圖,轉換成灰階圖{IplImage *GrayImg = cvCreateImage(cvGetSize(SrcImg), IPL_DEPTH_8U, 1);cvCvtColor(SrcImg, GrayImg, CV_BGR2GRAY);}else{cvReleaseImage(&GrayImg);GrayImg = SrcImg;}/*picture control顯示圖片,picture control的ID為IDC_ShowSrcImg*///擷取IDC_STATIC控制項的裝置環境,以便對其進行映像操作CDC* pDCSrc = GetDlgItem(IDC_ShowSrcImg)->GetDC();//獲得顯示空間的DC,MFC類一般都是以C開頭HDC  hDCSrc = pDCSrc->GetSafeHdc();//得到hDC控制代碼進行繪圖操作CvvImage cimgsrc;cimgsrc.CopyOf(GrayImg);//將映像顯示到IDC_ShowImgSrc控制項上CRect rectsrc;GetDlgItem(IDC_ShowSrcImg)->GetClientRect(&rectsrc);cimgsrc.DrawToHDC(hDCSrc, &rectsrc);// 釋放ReleaseDC(pDCSrc);}

OpenCV彈出對話方塊,選擇圖片進行顯示:

void CMyDlg::OnBnClickedBtnopenimg(){// TODO:  在此添加控制項通知處理常式代碼IplImage* SrcImg = NULL;CFileDialog dlg(TRUE, _T("*.bmp;*.jpg;*.tif"), NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,"image files All Files (*.*) |*.*||", NULL);// 選項圖片的約定;  dlg.m_ofn.lpstrTitle = _T("開啟圖片");// 開啟檔案對話方塊的標題名;(*.bmp; *.jpg) |*.bmp; *.jpg |  if (dlg.DoModal() == IDOK)// 判斷是否獲得圖片;  {if (dlg.GetFileExt() != "bmp" && dlg.GetFileExt() != "jpg"&&dlg.GetFileExt() != "tif"){AfxMessageBox(_T("請選擇正確的圖片格式。"), MB_OK);return;}CString mPath = dlg.GetPathName();// 擷取圖片路徑;  SrcImg = cvLoadImage(mPath);//讀取圖片、緩衝到一個局部變數ipl中;  if (!SrcImg)// 判斷是否成功載入圖片;  return;}/*picture control顯示圖片,picture control的ID為IDC_ShowSrcImg*///擷取IDC_STATIC控制項的裝置環境,以便對其進行映像操作CDC* pDCSrc = GetDlgItem(IDC_ShowSrcImg)->GetDC();//獲得顯示空間的DC,MFC類一般都是以C開頭HDC  hDCSrc = pDCSrc->GetSafeHdc();//得到hDC控制代碼進行繪圖操作CvvImage cimgsrc;cimgsrc.CopyOf(SrcImg);//將映像顯示到IDC_ShowImgSrc控制項上CRect rectsrc;GetDlgItem(IDC_ShowSrcImg)->GetClientRect(&rectsrc);cimgsrc.DrawToHDC(hDCSrc, &rectsrc);// 釋放ReleaseDC(pDCSrc);}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.