1. 程式人生 > >基於OPenCV和MFC的讀圖程式

基於OPenCV和MFC的讀圖程式

一、基本設定(通用)

安裝好opencv後並設定好環境(見《opencv安裝與裝置》)

二、對話方塊

在VC++6.0中新建對話方塊,工程名為yuhuan。

然後按以下幾個步驟:

(1)給對話方塊新增一個讀圖按鈕和picture控制元件分別修改讀圖按鈕和picture控制元件ID為:IDC_OPENIMAGE,IDC_IMAGE.如右圖。併為讀圖按鈕新增實現函式。

(2)在對話方塊的標頭檔案yuhuanDlg.h中新增opencv的兩個標頭檔案。

#include "cv.h"
#include "highgui.h" // include GUI library interface

並在對話方塊類的定義中新增公共變數和公共函式

IplImage *srcimage; //源影象
CString filePath; //開啟影象的路徑
void DrawPicToHDC(IplImage *image, UINT ID);//在控制元件上顯示圖片

(3) 在yuhuanDlg.cpp編寫讀圖函式

void CYuhuanDlg::OnOpenimage()
{
// TODO: Add your control notification handler code here

//採用了MFC提供的類CFileDialog
CFileDialog fileOpenDlg(TRUE, _T("*.bmp"), "",OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,
"image files (*.jpg;*.bmp) |*.jpg;*.bmp|image file(*.bmp)|*.bmp;|image file(*.png)|*.png;|All Files (*.*)|*.*||",NULL);
char title[]= {"Open Image"}; //僅僅設定對話方塊的標題
fileOpenDlg.m_ofn.lpstrTitle= title;
if (fileOpenDlg.DoModal()==IDOK)
{
filePath=fileOpenDlg.GetPathName();
srcimage= cvvLoadImage(filePath); //根據開啟影象的路徑讀圖
DrawPicToHDC(srcimage,IDC_IMAGE); //根據控制元件的ID將影象顯示在對話方塊中
}
}

(4)編寫在控制元件中顯示圖片的函式
void CYuhuanDlg::DrawPicToHDC(IplImage *image, UINT ID)
{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
CvvImage cimg; //只有CvvImage類的影象才有下面的DrawToHDC函式
cimg.CopyOf(image,3);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
}