VS2013 MFC + OpenCV3.0 打开图片

本文仅涉及一些核心步骤,具体 OpenCV 的配置以及其他的细节问题,请参考 VS2010 / MFC + OpenCV 2.4.1打开图片

1. 新建 MFC 对话框项目

基于对话框,不使用Unicode库,在静态库中使用MFC,完成

2. 配置 OpenCV 3.

OpenCV 3. 的配置相较 OpenCV 2 在依赖项的添加上会简略很多。

3. 添加和设置控件

  • (1)菜单,视图,工具箱,打开工具箱 ⇒ 添加 Button 控件;

    右击添加的按钮,属性,将其 Caption 改为 OpenImg;

  • (2)同理,添加Picture Control控件

    右击 Picture 控件,属性,打开控件属性窗口,其 ID 为 IDC_STATIC,修改Type 为 Rectangle,将 Picture 控件大小调整合适(用于最终图像的显示)。

  • (3)右击按钮,添加事件处理程序

    选择BN_CLICKED,类列表为CMFC_DEMODlg(交由 Dialog 类捕获按钮单击消息),函数名为OnBnClickedOpenImg,添加编辑

4. 添加 OpenCV 的 CvvImage 文件(.h, .cpp)

CvvImage.h 下载地址:CvvImage.h
CvvImage.cpp 下载地址:CvvImage.cpp

【头文件】(右键)⇒ 添加现有项 ⇒ CvvImage.h
【源文件】(右键)⇒ 添加现有项 ⇒ CvvImage.cpp

5. 添加代码

  • (1)打开 C**Dlg 类对应的头文件(**Dlg.h)的起始位置处添加:

    
    #include <opencv\cv.h>
    
    
    #include <opencv\highgui.h>
    
    
    #include "CvvImage.h"
    
  • (2)在 C**Dlg 类的声明中添加 DrawPicToHDC()成员函数的声明:

    void DrawPicToHDC(IplImage *img, UINT ID);
  • (3)C**Dlg 类对应的源文件(**Dlg.cpp)中添加 DrawPicToHDC() 的实现

    void CMFC_DEMODlg::DrawPicToHDC(IplImage *img, UINT ID)
    {
        CDC *pDC = GetDlgItem(ID)->GetDC();
        HDC hDC= pDC->GetSafeHdc();
        CRect rect;
        GetDlgItem(ID)->GetClientRect(&rect);
        CvvImage cimg;
        cimg.CopyOf( img ); // 复制图片
        cimg.DrawToHDC( hDC, &rect ); // 将图片绘制到显示控件的指定区域内
        ReleaseDC( pDC );
    }
  • (4)为新增按钮的响应函数(OnBnClickedOpenImg)添加代码:

    void CMFC_DEMODlg::OnBnClickedOpenImg()
    {
        // TODO: 在此添加控件通知处理程序代码
        IplImage *image=NULL; //原始图像
        if(image) cvReleaseImage(&image);
        image = cvLoadImage("D:\\demo.jpg",1); //显示图片
        DrawPicToHDC(image, IDC_STATIC);
    }

6. 编译运行,大功告成

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值