记住新建项目后,要配置OpenCV环境!参考链接http://blog.csdn.net/zy122121cs/article/details/49180541

做工程搭建框架什么的,基本的要熟练啊。

 

 其中借鉴了ww老师的代码~

新建项目,命名:【OpenCV】【MFC】图片、视频、摄像头输入响应【详细图解】

点确定,然后,我习惯用基于对话框的:【OpenCV】【MFC】图片、视频、摄像头输入响应【详细图解】然后点击完成。

从工具箱拖几个控件出来:    【OpenCV】【MFC】图片、视频、摄像头输入响应【详细图解】 Combo Box组合框属性设置:【OpenCV】【MFC】图片、视频、摄像头输入响应【详细图解】

给图片随便命名个ID,再选择类型Frame:【OpenCV】【MFC】图片、视频、摄像头输入响应【详细图解】

 

 

如右图所示,框架就搭好了:【OpenCV】【MFC】图片、视频、摄像头输入响应【详细图解】

 

在Test01Dlg.h头文件中添加如下:

//包含Opencv库函数
#include <iostream>
#include <vector>
#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <afxwin.h>

#include "opencv2/imgproc/imgproc.hpp"//图像处理函数基本模块,包括图像滤波、图像几何变换、色彩空间转换等
#include "opencv2/highgui/highgui.hpp"//视频捕捉,图像视频读取解码,图形交互
#include "afxwin.h"

using namespace std;
using namespace cv;

继续在这里加以下代码,定义枚举类型和私有变量:

private:
    //定义枚举类型
    typedef enum {ememVIDEO_IN, emPICTURES_IN,emCAMERA_IN } READ_METHOD;//读入方式,图像0,分为相机1,视频2读入
    typedef enum {emVIEWBEF, emVIEWAFT } SHOW_WINDOW;//读入窗口,0为第一个窗口,2为第二个窗口

    //全局私有变量
    VideoCapture cap_VidCam;//获取相机输入或者本地视频
    cv::Mat m_frmBef;//原图像
    int inputType;//选择的数据输入方式
    int nImageWidth;//记录或设置的图像宽度
    int nImageHeight;//记录或设置的图像高度
    CString workDir;//图像初始默认文件夹

 

初始化部分BOOL CTest01Dlg::OnInitDialog():

 1 BOOL CTest01Dlg::OnInitDialog()
 2 {
 3     CDialogEx::OnInitDialog();
 4 
 5     // 将“关于...”菜单项添加到系统菜单中。
 6 
 7     // IDM_ABOUTBOX 必须在系统命令范围内。
 8     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
 9     ASSERT(IDM_ABOUTBOX < 0xF000);
10 
11     CMenu* pSysMenu = GetSystemMenu(FALSE);
12     if (pSysMenu != NULL)
13     {
14         BOOL bNameValid;
15         CString strAboutMenu;
16         bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
17         ASSERT(bNameValid);
18         if (!strAboutMenu.IsEmpty())
19         {
20             pSysMenu->AppendMenu(MF_SEPARATOR);
21             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
22         }
23     }
24 
25     // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
26     //  执行此操作
27     SetIcon(m_hIcon, TRUE);            // 设置大图标
28     SetIcon(m_hIcon, FALSE);        // 设置小图标
29 
30     // TODO: 在此添加额外的初始化代码
31 
32     //初始化视频数据读入方法
33     com_InputStyle.SetCurSel(1);
34     inputType=emPICTURES_IN;
35 
36     //将OpenCV中的窗口显示在MFC中
37     namedWindow("emVIEWBEF", WINDOW_AUTOSIZE);
38     HWND hWnd = (HWND) cvGetWindowHandle("emVIEWBEF");
39     HWND hParent = ::GetParent(hWnd);
40     ::SetParent(hWnd, GetDlgItem(IDC_FRMBEF)->m_hWnd);
41     ::ShowWindow(hParent, SW_HIDE);
42 
43     UpdateData( FALSE );//更新界面控件
44 
45     //将OpenCV中的窗口显示在MFC中
46     workDir = F_InitWorkDir();//判断Imgs及SaveFrame文件夹是否存在,不存在创建(ww)
47 
48     //初始化图像显示控件的图像
49     CRect rect;
50     GetDlgItem(IDC_FRMBEF) ->GetClientRect( &rect );
51     m_frmBef = Mat::zeros(rect.Height(), rect.Width(), CV_8UC3);
52 
53     return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
54 }
View Code

相关文章: