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

發佈了11 篇原創文章 · 獲贊 40 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章