MFC+OpenCV打开摄像头

本文详细介绍了如何在MFC应用程序中使用OpenCV打开摄像头,包括建立工程、设置OpenCV静态编译环境、播放视频、实现运动检测以及暂停/恢复视频线程的功能。同时,文章提到了在开发过程中可能遇到的错误及其解决方案。
摘要由CSDN通过智能技术生成

        MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。

        工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。

        用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。

一、建立工程。

1、建立一个基于对话框的工程VideoProcess,在对话框中加入一个按钮IDC_CAMERA,标题为“打开摄像头” 。

      右击工程并选中“New Class…”为工程添加基类为CWinThread派生线程类CCamera。

      给工程添加新对话框IDD_CAMERA_DLG,标题为“摄像头视频”。 为对话框IDD_CAMERA_DLG创建一个基于CDialog的类CCameraDlg。


2、在主对话框中添加按钮,并双击后,添加消息响应函数(启动用户界面线程),还要加上CCamera类的头文件。

void CVideoProcessDlg::OnBnClickedCameraDlg()
{
	// TODO: 在此添加控件通知处理程序代码
	CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CCamera));
}

3、并在CCamera类中添加protected变量CCameraDlg m_dlg,并添加头文件。

#include "CameraDlg.h"
// CCamera

class CCamera : public CWinThread
{
	DECLARE_DYNCREATE(CCamera)

protected:
	CCamera();           // 动态创建所使用的受保护的构造函数
	virtual ~CCamera();

	CCameraDlg m_dlg; //tfygg

public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();

protected:
	DECLARE_MESSAGE_MAP()
};

分别重载InitInstance()函数和ExitInstance()函数:

BOOL CCamera::InitInstance()
{
	// TODO: 在此执行任意逐线程初始化
	m_dlg.Create(IDD_CAMERA_DLG);
	m_dlg.ShowWindow(SW_SHOW);
	m_pMainWnd=&m_dlg;
	return TRUE;
}

int CCamera::ExitInstance
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值