VC++编写摄像头录制系统.doc

上传人:大米 文档编号:564357688 上传时间:2023-09-08 格式:DOC 页数:24 大小:102KB
返回 下载 相关 举报
VC++编写摄像头录制系统.doc_第1页
第1页 / 共24页
VC++编写摄像头录制系统.doc_第2页
第2页 / 共24页
VC++编写摄像头录制系统.doc_第3页
第3页 / 共24页
VC++编写摄像头录制系统.doc_第4页
第4页 / 共24页
VC++编写摄像头录制系统.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《VC++编写摄像头录制系统.doc》由会员分享,可在线阅读,更多相关《VC++编写摄像头录制系统.doc(24页珍藏版)》请在金锄头文库上搜索。

1、VC+编写基于摄像头录制系统首先编写该程序之前,必须要用到微软公司给我们提供的音视频函数库vfw。VFW(Video for Windows)是Microsoft推出的关于数字视频的一个软件开发包,VFW的核心是AVI文件标准。AVI(Audio Video Interleave)文件中的音、视频数据帧交错存放。围绕AVI文件,VFW推出了一整套完整的视频采集、压缩、解压缩、回放和编辑的应用程序接口(API)。由于AVI文件格式推出较早且在数字视频技术中有广泛的应用,所以VFW仍然有很大的实用价值,而且进一步发展的趋势。在VC+开发环境中调用VFW和使用其它开发包没有什么不同,只是需要将VFW

2、32.lib文件加入工程中,但在开放视频捕捉与压缩管理程序时需要其它软件硬件设置。VFW为AVI文件提供了丰富的处理函数和宏定义,AVI文件的特点在于它是典型的数据流文件,它由视频流、音频流、文本流组成。所以对AVI文件的处理主要是处理文件流。废话不多说了:本程序主要由底层的vc+ ApI函数实现:今后该程序会转换成基于MFC的源代码开发。首先用新建Win32程序,建立一个空项目:编写一个摄像头录制系统应用程序,代码如下:在新建的一个头文件和.cpp文件取名为VCaper.h,VCaper.cpp。把vfw.lib文件库导入到程序中。头文件写入一些宏定义资源:#define SELCAPDRV

3、DLG 100#define SELCAPDRVDLG_LSTBOX 101#define SELCAPDRVDLG_BUTTON 103#define EXIT 104#define HELP 105#define MINIMIZE 106#define MOVE 107#define CONNECT 113#define BUTTONSIZE 15#define PHOTO 114#define RECORDVIDEO 115#define COPY 116#define SOURCE 117#define FORMAT 118#define DISPLAY 119 VCaper.cpp文

4、件实现代码如下:#include /windows编程代码#include / 视频库#include #include / common dialogs#include VCaper.h/ resource header#include /字符串函数/#include oldeb.h/字符串函数LRESULT WINAPI MainWndProc( HWND, UINT, WPARAM, LPARAM ); / 选择捕捉程序驱动程序LRESULT WINAPI SelCapDrvProc( HWND, UINT, WPARAM, LPARAM );/ 列举捕捉驱动int EnumCapDrv

5、();/ 在主窗口创建按钮VOID APIENTRY HandlePopupMenu(HWND, POINT);/ 右键弹出菜单句柄DWORD WINAPI videoThreadProc(LPVOID lParam);/ 视频程序线程/* 全程变量 */HANDLE ghInstance;/ 应用程序实例HWND hwndMain; / 主要窗口句柄HWND hwndVideo;/ 视频捕捉窗口句柄HWND hwndSelCapDrvDlg;/ 选择捕捉驱动对话句柄HWND hwndSelCapDrvDlg_LBox;/ 选择捕捉驱动对话列举框句柄HWND hwndExit;/ 退出按钮HW

6、ND hwndMin;/ 最小化按钮HWND hwndHelp; / 帮助按钮HWND hwndRecord;/ 录像按钮HWND hwndPhoto;/ 快照按钮HWND hwndSource;/视频源选项HWND hwndFormat;/视频格式御览HWND hwndConnect;/数据块连接HANDLE hVideoThread;/ 停止录取视频线程HRGN hRegion1;/ 窗口修正区域CAPDRIVERCAPS CapDrvCaps;/ 驱动性能bool isRecordFileOpen = false;/ 录像开始标记bool isPhotoFileOpen = false;

7、/照相开始标记char recordFile260;/ 保持录像标记char photoFile260;/ 保持照相标记bool isPicFileOpen = false;/ flag set if snapshot file is openchar pictureFile260;/ file to hold snapshotbool isRecording = false;/ 判断是否录像bool threadEnd = false;/ 判断视频线程是否终止/* Function: int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int) *

8、 * 用途: 应用程序初始化 * * 注释: 注册窗口类, 创建显示主要窗口, 进入消息循环 * * */int PASCAL WinMain( HINSTANCE hInstance,/HINSTANCE:实例的句柄(Handle to an instance) HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow ) WNDCLASS wc;/WNDCLASS结构包含了RegisterClass函数注册窗口类时的窗口类属性 MSG msg;/如果不是前实例 if( !hPrevInstance ) wc.lpszClassName

9、 = GenericAppClass; wc.lpfnWndProc = MainWndProc;/函数名代表首地址,指定一个回调函数 wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = CreateSolidBrush (RGB(200, 200,100); wc.lpszMenuNa

10、me = GenericAppMenu; wc.cbClsExtra = 0; wc.cbWndExtra = 0; RegisterClass( &wc );/注册窗口类 ghInstance = hInstance; hwndMain = CreateWindow( GenericAppClass,/该函数创建一个重叠式窗口、弹出式窗口或子窗口。 小型视频监控系统, WS_OVERLAPPED, /WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL|WS_VISIBLE, 80, 60, 1100, 670, NULL, /家庭视频监控系统, NULL, h

11、Instance, NULL ); ShowWindow( hwndMain, nCmdShow );/显示窗口 /将主要的窗户设定为区域 SetWindowRgn(hwndMain,hRegion1,1);/注释掉此句的话,则显示矩形窗口,但是也同时显示一个圆角矩形 while( GetMessage( &msg, NULL, 0, 0 ) ) TranslateMessage( &msg );/该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage或PeekMessage时被读出 DispatchMessage( &msg );/该函数调度一个消息给窗口程序。通常调度从GetMessage取得的消息。消息被调度到的窗口程序即是MainProc()函数 return msg.wParam;/* Function: LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM) * * 目的:应用程序的信息 *

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号