MFC+Opencv4+vs2017显⽰图像详细⼩⽩教程(不使⽤cvvImage)
前⾔:最近在学习过程中遇到需要使⽤MFC的地⽅。开始进⾏了MFC的学习,⽹上到的资源⼤多有点⽼了,感觉⽤起来⼗分不便,⼤家可以搜⼀个利⽤MFC制作计算器的⼩教程,对MFC进⾏了解,本⽂是利⽤MFC显⽰图像的详细步骤。
注:本⽂⼯程可点击链接下载
开始
⾸先创建⼀个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 */
virtual void CopyOf(CvvImage& image, int desired_color = -1);
virtual void CopyOf(IplImage* img, int desired_color = -1);
IplImage* GetImage() { return m_img; };
virtual void Destroy(void);
/* width and height of ROI */
rectangle函数opencvint Width() { return !m_img ? 0 : !m_img->roi ? m_img->width : m_img->roi->width; };
int Height() { return !m_img ? 0 : !m_img->roi ? m_img->height : m_img->roi->height; };
int Bpp() { return m_img ? (m_img->depth & 255)*m_img->nChannels : 0; };
virtual void Fill(int color);
/* draw to highgui window */
virtual void Show(const char* window);
#if defined WIN32 || defined _WIN32
/* draw part of image to the specified DC */
virtual void Show( HDC dc, int x, int y, int width, int height,
int from_x = 0, int from_y = 0);
/* draw the current image ROI to the specified rectangle of the destination DC */
virtual void DrawToHDC( HDC hDCDst, RECT* pDstRect);
#endif

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。