320上位机VC MFC打开电脑自带摄像头
打开电脑自带摄像头
功能展示
笔记本电脑都会配有一摄像头,我们当前例程使用微软提供的VFW数字视屏软件包控制我们电脑上的摄像头,效果如图,例程会有打开与关闭摄像头两个按钮操作;
要点提示
VFW主要由一组动态库构成,在我们安装电脑系统时已自动安装,我们编写自序时为了支持VFW,我们得在编译器中添加相应的头文件与库文件#include “vfw.h“ #pragma comment(lib,”vfw32.lib”)#include <afxmt.h>;库文件中提供多个函数与宏用于视频的控制;
HWND VFWAPI capCreateCaptureWindow( LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWnd, int nID ); lpszWindowName窗口名称。 dwStyle窗口风格。 X,y窗口左上角坐标。 nWidth, nHeight窗口大小, hWnd父窗口句柄,nID窗口ID;
BOOL capDriverConnect( hwnd, iIndex ); hwnd视屏捕捉窗口的句柄, iIndex 驱动程序范围0—9;
BOOL capPreviewRate( hwnd, wMS ); hwnd视屏捕捉窗口,wMS速率单位MS;
BOOL capPreview( hwnd, f ); hwnd视屏捕捉窗口;F表示激活或禁止预览模式;
实现功能
1.新建基于对话框的应用程序
2.在主对话框头文件添加视频操作支持代码#include "vfw.h"
#pragma comment(lib,“vfw32.lib”) #include <afxmt.h>及两成员变量一线程函数public:
HWND m_hVideoWnd; CEvent m_Event;
static UINT ThreadFun( LPVOID lpParam );//线程函数定义
线程函数的函数体部分参阅源代码;
3.在OnInitDialog()函数中初始化
AfxBeginThread(ThreadFun,(void*)this); //开始一个线程
::WaitForSingleObject(m_Event,INFINITE); //等待线程函数的执行
while(capDriverConnect(m_hVideoWnd,0)!=TRUE) //连接驱动程序
continue;
::SetParent(m_hVideoWnd,*this); //设置父窗口
::SetWindowLong(m_hVideoWnd,GWL_STYLE,WS_CHILD);
::SetWindowPos(m_hVideoWnd,NULL,10,10,300,300,SWP_NOZORDER);
::ShowWindow(m_hVideoWnd,SW_SHOW);
capPreviewRate(m_hVideoWnd,30); //设置预览速率
capPreview(m_hVideoWnd,true); //开始预览
4.添加<关闭摄像头><打开摄像头>实现摄像头的操作;
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|