记住新建项目后,要配置OpenCV环境!参考链接http://blog.csdn.net/zy122121cs/article/details/49180541
做工程搭建框架什么的,基本的要熟练啊。
其中借鉴了ww老师的代码~
新建项目,命名:
点确定,然后,我习惯用基于对话框的:然后点击完成。
从工具箱拖几个控件出来: Combo Box组合框属性设置:
给图片随便命名个ID,再选择类型Frame:
如右图所示,框架就搭好了:
在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 }