您的位置:首页 > 其它

[置顶] MFC 用对话框VMR_Capture类实现图像采集,抓拍

2016-11-19 14:59 204 查看
1.新建一个对话框取名摄像头
2.在其中加入一个picture control控件(显示摄像),一个comb控件(存储本机有的摄像头),一个button按钮(拍照)。
给picture control控件设置控制变量命名为my_device        comb控件设置控制变量命名为mylist。
3.准备好VMR_Capture.h文件和VMR_Capture.cpp文件,分别加入到头文件和源文件中
4.打开摄像头Dlg.h头文件在protected中加入变量
CVMR_Capture m_VMRCap;
CString m_yuvFileName;
CFile m_pFile;

int m_imageWidth;
int m_imageHeight;

各种头文件宏定义自己补充

#include "stdafx.h"
#include "摄像头.h"
#include "摄像头Dlg.h"
#include "afxdialogex.h"
#include "VMR_Capture.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define CAMERA_WIDTH  640   //352
#define CAMERA_HEIGHT 480


5.在 摄像头Dlg.cpp 中找到BOOL C摄像头Dlg::OnInitDialog()函数添加如下代码

int m_imageWidth = CAMERA_WIDTH;
int  m_imageHeight= CAMERA_HEIGHT;
this->m_VMRCap.EnumDevices(this->mylist);
this->mylist.SetCurSel(0);
int id = this->mylist.GetCurSel();
HRESULT hr = m_VMRCap.Init(id,my_device.GetSafeHwnd(),m_imageWidth,m_imageHeight);
if (FAILED(hr))
AfxMessageBox(_T("无法创建滤波器链表!"));


6.双击拍照按钮,补充代码如下

CString sfile="C:\\Users\\Administrator\\Desktop\\sgad.jpg";
m_VMRCap.ImageCapture(sfile);


注意路径格式,自己修改。

7.给comb添加消息CBN_SELCHANGE

编辑代码如下

m_VMRCap.CloseInterfaces();
ong m_imageWidth = CAMERA_WIDTH;
long  m_imageHeight= CAMERA_HEIGHT;
HWND hwnd = this->my_device.GetSafeHwnd();
int id = this->mylist.GetCurSel();
HRESULT hr = m_VMRCap.Init(id,hwnd,m_imageWidth,m_imageHeight);

编译运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: