opencv3.1.0基于MFC打开摄像头
来源:互联网 发布:wps linux 缺少字体 编辑:程序博客网 时间:2024/04/29 20:11
//FireMFCDlg.cpp
#include "FireMFC.h"
#include "FireMFCDlg.h"
#include "afxdialogex.h"
using namespace cv;
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
public:
// afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
};
CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
// ON_WM_CHAR()
END_MESSAGE_MAP()
// CFireMFCDlg 对话框
CFireMFCDlg::CFireMFCDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_FIREMFC_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CFireMFCDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CFireMFCDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_OpenCamera, &CFireMFCDlg::OnBnClickedOpencamera)
// ON_WM_TIMER()
ON_WM_TIMER()
ON_BN_CLICKED(IDC_CloseCamera, &CFireMFCDlg::OnBnClickedClosecamera)
END_MESSAGE_MAP()
// CFireMFCDlg 消息处理程序
BOOL CFireMFCDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE);// 设置大图标
SetIcon(m_hIcon, FALSE);// 设置小图标
ShowWindow(SW_MINIMIZE);
// TODO: 在此添加额外的初始化代码
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CFireMFCDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CFireMFCDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CFireMFCDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CFireMFCDlg::OnBnClickedOpencamera()
{
if (!camera.isOpened())
{
camera.open(0);
}
SetTimer(IDC_CameraPreview, 10, NULL);
}
void CFireMFCDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (!camera.isOpened()) return;
Mat mat;
if (!camera.read(mat))
return;
resize(mat, mat, Size(480, 360));//(520, 350)
CImage cimage;
MatToCImage(mat, cimage);
cimage.Draw(GetDlgItem(IDC_CameraPreview)->GetDC()->m_hDC, 0, 0, cimage.GetWidth(), cimage.GetHeight(),
0, 0, cimage.GetWidth(), cimage.GetHeight());
CDialogEx::OnTimer(nIDEvent);
}
//----------定义MatToCImage函数,从图形显示到MFC上
void CFireMFCDlg::MatToCImage(cv::Mat &mat, CImage &cImage)
{
int width = mat.cols;
int height = mat.rows;
int channels = mat.channels();
cImage.Destroy();//初始化图像cImage
cImage.Create(width,height,8 * channels);//创建化图像cImage
uchar* ps;
uchar* pimg = (uchar*)cImage.GetBits();
int step = cImage.GetPitch();
for (int i = 0; i < height; ++i)
{
ps = (mat.ptr<uchar>(i));
for (int j = 0; j < width; ++j)
{
if (channels == 1) //gray
{
*(pimg + i*step + j) = ps[j];
}
else if (channels == 3) //color
{
for (int k = 0; k < 3; ++k)
{
*(pimg + i*step + j * 3 + k) = ps[j * 3 + k];
}
}
}
}
}
0 0
- opencv3.1.0基于MFC打开摄像头
- 【opencv3.0】打开摄像头
- MFC+OpenCV打开摄像头
- python2.7+opencv3.1 打开摄像头
- 在opencv3.2中打开摄像头
- MFC+OPENCV3.0显示摄像头画面
- VS2013 MFC + OpenCV3.0 打开图片
- OpenCV3.0+MFC+VS2010打开图像
- OpenCV3.0+MFC+VS2010打开图像
- OpenCV3.0+MFC+VS2010打开图像
- 一个基于MFC多线程和Opencv库的打开两个摄像头实例
- opencv3.0 播放视频和打开摄像头代码
- OPENCV3.0打开摄像头或者视频显示画面
- MFC+Opencv3 摄像头读取+灰度直方图+帧数对比
- 使用DirectShow打开摄像头 MFC编程
- [opencv]MFC打开摄像头显示图像
- 使用DirectShow打开摄像头 MFC编程
- OpenCV3.6 实时打开USB 摄像头 和插网线的网络摄像头
- Spark1.6.1 MLlib 特征抽取和变换
- 代码中的12350和-12350
- hdu1231 最大连续子序列
- 安卓培训专家:面试官如何面试程序员
- 过滤器和拦截器
- opencv3.1.0基于MFC打开摄像头
- 安卓技术常用的网站
- JAVA设计模式(12):结构型-门面模式(Facade)
- 安装 Hbase
- Eclipse导入库以后,properties-Android里面依然是红叉
- java基础回顾_day06_面向对象
- GDOI2016 Day2 T3 机密网络
- ssh学习之旅(1)--jQuery获取session的值
- Android笔记(十六)文件存储