前言:最近在学习过程中遇到需要使用MFC的地方。开始进行了MFC的学习,网上找到的资源大多有点老了,感觉用起来十分不便,大家可以搜一个利用MFC制作计算器的小教程,对MFC进行了解,本文是利用MFC显示图像的详细步骤。
注:https://download.youkuaiyun.com/download/guchensha/11373642 本文工程可点击链接下载
开始
首先创建一个MFC项目
我们利用VS进行MFC的创建,其实就是利用VS创建一个新的项目,这里我们要看一下自己安装的VS是否有MFC,如下图:
创建过程中注意将应用程序类型选择为基于对话框的形式,如下图:
其他按照默认就可以了,点击完成创建。
next
点击资源文件中的 .rc2文件
找到Dialog中的第二个
点击之后的效果图如下,这也就是我们最后得到的窗口的模型
我们在工具箱中找到我们需要的控件进行操作,这里用到的是BUTTON以及PICTURE CONTROL两个控件,拖动修改之后如下:
之后搭配一下Opencv的环境
这里不在赘述,网上教程很多,注意配置环境的选择以及Debug还是Release模式下
编程模块
网上关于MFC结合Opencv显示图像的教程中,大多利用了CvvImage类,一个已经被删除的类,如果使用需要添加CvvImage.h以及CvvImage.cpp,(我用opencv4尝试了这种方法,好像并不可以使用),这里把两个文件放在这里,需要自取。(网上并不难找)
CvvImage.h
#ifndef CVVIMAGE_CLASS_DEF
#define CVVIMAGE_CLASS_DEF
#include <opencv/cv.h>
#include <opencv/highgui.h>
/* CvvImage class definition */
class CvvImage
{
public:
CvvImage();
virtual ~CvvImage();
/* Create image (BGR or grayscale) */
virtual bool Create(int width, int height, int bits_per_pixel, int image_origin = 0);
/* Load image from specified file */
virtual bool Load(const char* filename, int desired_color = 1);
/* Load rectangle from the file */
virtual bool LoadRect(const char* filename,
int desired_color, CvRect r);
#if defined WIN32 || defined _WIN32
virtual bool LoadRect(const char* filename,
int desired_color, RECT r)
{
return LoadRect(filename, desired_color,
cvRect(r.left, r.top, r.right - r.left, r.bottom - r.top));
}
#endif
/* Save entire image to specified file. */
virtual bool Save(const char* filename);
/* Get copy of input image ROI */