基于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 eOpenDlg(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);
}

至此,已经完成在对话框的控件中显示图像的任务了,下图即为试验图:



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值