OpenCV+MFC 打开文件并显示在picture控件上

在校学生刚刚接触OpenCV,用OpenCV和MFC创建对话框界面,基本功能:打开文件并在picture控件上显示所选择的图片。因为我的是OpenCV3.0所以要自行添加CvvImage.h和CvvImage.cpp,方法教程网上有很多,这里不多说了,主要写一下MFC的实现代码,方便自己做一个记录。

(1)按要求创建完一个对话框后如图1所示

 

 

(2)显示图片的按钮响应函数

 1 void CvirtualrealityDlg::OnBnClickedButtonShow()
 2 {
 3     CString m_strPicPath;
 4     IplImage* TheImage;
 5     CFileDialog dlg(true, _T("*.jpg"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
 6         _T("image file(*.jpg)||All Files(*.*)|*.*|"), NULL); //选项图片的约定
 7     dlg.m_ofn.lpstrTitle = _T("open Image");                //打开文件对话框的标题名
 8     if (dlg.DoModal() != IDOK)                                //判断是否获得图片
 9         return;
10     m_strPicPath = dlg.GetPathName();                        //获得图片路径
11     m_strPicPath.Replace(_T("//"), _T(""));
12 
13     TheImage = cvLoadImage((CT2CA)m_strPicPath, 1);            //读取图片、缓存到一个局部变量the image中
14 
15     if (TheImage)
16         ShowImage(TheImage, IDC_STATIC_SHOW);                //调用显示图片函数
17     else
18         return;
19         
20 
21 }
View Code

(3)其中调用的显示图片函数ShowImage()需要在头文件中声明,在源文件中声明如下

 1 void CvirtualrealityDlg::ShowImage(IplImage* img, UINT ID)
 2 {    
 3     CDC* pDC = GetDlgItem(ID)->GetDC();                        //获得显示控件的DC
 4     HDC hDC = pDC->GetSafeHdc();                            //获得HDC(设备句柄)来进行绘图操作
 5     
 6     CRect rect;
 7     GetDlgItem(ID)->GetClientRect(&rect);
 8     
 9     SetRect(rect, rect.left, rect.top, rect.right, rect.bottom);
10     
11     CvvImage cimg;
12     cimg.CopyOf(img);                                        //复制图片
13     cimg.DrawToHDC(hDC, &rect);                                //将图片绘制到显示控件的指定区域内
14     ReleaseDC(pDC);
15     
16 }
View Code

(4)再运行一下就可以了。

再来一张效果图

 

 

 

转载于:https://www.cnblogs.com/lincolnlu/p/8540219.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值