基于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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章