OpenCV+MFC 显示图像

一、新建TEST7项目
二、配置OpenCV链接库,下载并添加CvvImage.h和CvvImage.cpp文件
原因:opencv2.x以上版本已经不支持CvvImage类,而MFC picture控件使用的是Image*类,不支持Mat;
添加文件
三、插入控件:button、picture
BUTTON控件属性
PICTURE控件属性
type属性:

  • Frame:显示一个无填充的矩形框
  • Rectangle:显示一个填充的矩形框,矩形颜色可通过Color 属性的下拉列表设定
  • Icon:显示一个图标(Icon)
  • Bitmap:显示一个位图(Bitmap)
  • Owner Draw:自绘
  • Enhanced Metafile:显示一个加强的元数据文件(Metafile)
  • Etched Horz:显示一条横分割线
  • Etched Vert:显示一条竖分割线

四、为控件添加消息处理函数
添加事件处理程序
弹出事件处理向导
五、添加代码
在主框架头文件“TEST7Dlg.h”中添加头文件:

 #pragma once
 #include "cv.h"
 #include "highgui.h"
 #include "CvvImage.h"

在主框架头文件“TEST7Dlg.h”中添加成员定义、成员函数声明DrawPicToHDC:

    CRect rect;     //位置矩形
    CStatic* pStc; //标识图像显示的Picture控件
    CDC* pDC;      //视频显示控件设备上下文
    HDC hDC;       //视频显示控件设备句柄
    CvCapture* capture; //视频获取结构
    CvvImage cimg;
    //添加成员函数声明DrawPicToHDC
    void DrawPicToHDC(IplImage *img, UINT ID); 

在主框架实现文件“TEST7Dlg.cpp”中添加函数实现代码:

  • 构造函数中初始化:
CTEST7Dlg::CTEST7Dlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(CTEST7Dlg::IDD, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

    pStc=NULL;
    pDC=NULL;
    capture=NULL;
}
  • 成员函数DrawPicToHDC的实现:
void CTEST7Dlg::DrawPicToHDC(IplImage *img, UINT ID)
{
    pStc=(CStatic *)GetDlgItem(ID);//IDC_VIEW为Picture控件ID
    pDC = pStc->GetDC(); 
    hDC= pDC->GetSafeHdc(); 
    pStc->GetClientRect(&rect);
    cimg.CopyOf(img);
    cimg.DrawToHDC( hDC, &rect ); // 将图片绘制到显示控件的指定区域内 
    ReleaseDC( pDC );
}
  • 在新增按钮的响应函数中添加代码:
void CTEST7Dlg::OnBnClickedOnOpenButton()
{
    // TODO: 在此添加控件通知处理程序代码
    IplImage *image=NULL; //原始图像 
    if(image) cvReleaseImage(&image); 
    image = cvLoadImage("test.bmp"); //显示图片 
    DrawPicToHDC(image, IDC_PIC_STATIC); 
}

六、编译运行,结果如下:
编译运行结果
读取图片结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值