资源简介
vc++调用usb摄像头,进行拍照,保存为bmp文件
代码片段和文件信息
//-------------------------------------------------------------------
// CCaptureVideo视频捕捉类实现文件CaptureVideo.cpp
//-------------------------------------------------------------------
// CaptureVideo.cpp: implementation of the CCaptureVideo class.
//
/////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “CaptureVideo.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
BOOL bOneShot=FALSE;//全局变量
class CSampleGrabberCB : public ISampleGrabberCB
{
public:
long lWidth;
long lHeight;
TCHAR m_szFileName[MAX_PATH];// 位图文件名称
CSampleGrabberCB( )
{
strcpy(m_szFileName “c:\\donaldo.bmp“);
}
STDMETHODIMP_(ULONG) AddRef() { return 2; }
STDMETHODIMP_(ULONG) Release() { return 1; }
STDMETHODIMP QueryInterface(REFIID riid void ** ppv)
{
if( riid == IID_ISampleGrabberCB || riid == IID_IUnknown )
{
*ppv = (void *) static_cast ( this );
return NOERROR;
}
return E_NOINTERFACE;
}
STDMETHODIMP SampleCB( double SampleTime IMediaSample * pSample )
{
return 0;
}
STDMETHODIMP BufferCB( double dblSampleTime BYTE * pBuffer long lBufferSize )
{
if( !bOneShot )return 0;
if (!pBuffer)return E_POINTER;
SaveBitmap(pBuffer lBufferSize);
bOneShot = FALSE;
return 0;
}
//创建位图文件
BOOL SaveBitmap(BYTE * pBuffer long lBufferSize )
{
HANDLE hf = CreateFile(
m_szFileName GENERIC_WRITE FILE_SHARE_READ NULL
CREATE_ALWAYS NULL NULL );
if( hf == INVALID_HANDLE_VALUE )return 0;
// 写文件头
BITMAPFILEHEADER bfh;
memset( &bfh 0 sizeof( bfh ) );
bfh.bfType =‘MB‘;
bfh.bfSize = sizeof( bfh ) + lBufferSize + sizeof( BITMAPINFOHEADER );
bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );
DWORD dwWritten = 0;
WriteFile( hf &bfh sizeof( bfh ) &dwWritten NULL );
// 写位图格式
BITMAPINFOHEADER bih;
memset( &bih 0 sizeof( bih ) );
bih.biSize = sizeof( bih );
bih.biWidth = lWidth;
bih.biHeight = lHeight;
bih.biPlanes = 1;
bih.biBitCount = 24;
WriteFile( hf &bih sizeof( bih ) &dwWritten NULL );
// 写位图数据
WriteFile( hf pBuffer lBufferSize &dwWritten NULL );
CloseHandle( hf );
return 0;
}
};
CSampleGrabberCB mCB;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCaptureVideo::CCaptureVideo()
{
//COM Library Intialization
if(FAILED(CoInitialize(NULL))) /* COINIT_APARTMENTTHREADED)))*/
{
AfxMessageBox(“CoInitialize Failed!\r\n“);
return;
}
m_hWnd = NULL;
m_pVW = NULL;
m_pMC = NULL;
m_pGB = NULL;
m_pCapture = NULL;
}
CCaptureVideo::~CCaptureVideo()
{
// Stop media playback
if(m_pMC)m_pMC->Stop();
if(m_pVW)
{
m_pVW->put_Visible(OAFALSE);
m_pVW->put_Owner(NULL);
}
srelease(m_pCapture);
srelease(m_pMC);
srelease(m_pGB)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8913 2007-10-18 18:41 test\CaptureVideo.cpp
文件 1447 2007-10-18 18:42 test\CaptureVideo.h
文件 77105 2007-10-18 19:12 test\Debug\CaptureVideo.obj
文件 0 2007-10-18 19:12 test\Debug\CaptureVideo.sbr
文件 105731 2007-10-18 19:12 test\Debug\StdAfx.obj
文件 1375518 2007-10-18 19:12 test\Debug\StdAfx.sbr
文件 6358016 2007-10-18 19:17 test\Debug\test.bsc
文件 131115 2007-10-19 13:37 test\Debug\test.exe
文件 437896 2007-10-19 13:37 test\Debug\test.ilk
文件 42141 2007-10-18 19:13 test\Debug\test.obj
文件 6890572 2007-10-18 19:12 test\Debug\test.pch
文件 558080 2007-10-19 13:37 test\Debug\test.pdb
文件 2612 2007-10-19 13:37 test\Debug\test.res
文件 0 2007-10-18 19:13 test\Debug\test.sbr
文件 55355 2007-10-18 19:17 test\Debug\testDlg.obj
文件 0 2007-10-18 19:17 test\Debug\testDlg.sbr
文件 312320 2011-12-24 00:05 test\Debug\vc60.idb
文件 626688 2007-10-18 19:17 test\Debug\vc60.pdb
文件 401484 2004-03-18 18:36 test\msvcrtd.dll文件\msvcrtd.dll
文件 40 2007-12-21 20:47 test\msvcrtd.dll文件\安装.bat
文件 3543 2007-10-18 18:56 test\ReadMe.txt
文件 1078 2007-10-18 18:56 test\res\test.ico
文件 396 2007-10-18 18:56 test\res\test.rc2
..A.SH. 3072 2011-05-18 08:49 test\res\Thumbs.db
文件 820 2007-10-18 18:59 test\resource.h
文件 206 2007-10-18 18:56 test\StdAfx.cpp
文件 1054 2007-10-18 18:56 test\StdAfx.h
文件 20884 2011-12-23 23:59 test\test.aps
文件 1211 2011-12-24 00:06 test\test.clw
文件 2035 2007-10-18 18:56 test\test.cpp
............此处省略18个文件信息
- 上一篇:C++。电信计费系统
- 下一篇:c++贪吃蛇编程源代码论文设计c语言
相关资源
- VC++6.0编译通过的读写CSV文件的代码及
- 基于VC++的UDP文件传输系统
- MFC停车场车辆信息管理系统附数据库
- VC++实现灰度图像的6种边缘检测算子
- VC++MFC抓包程序源码
- VC++图像处理源码库
- B样条曲线生成算法,用VC++加OpenGL写的
- opencv MFC 摄像头 人脸识别
- 通用杀毒软件VC++源代码
- VC++实现Contourlet图像处理
- 轴承表面质量缺陷识别与统计系统
- VC++ MFC科学计算器,含代码和整个工程
- VC++实现小波变换
- VC++实现简单的用户登录系统ADO。包括
- VC++实现简单的用户登录系统,包括修
- diffie-hellman密钥交换协议vc++实现
- 军棋源代码
- 基于opencv的傅里叶描述子VC++代码
- VC++深入详解光盘代码!
- 基于单片机的温湿度采集系统/VC++上位
- 基于有线局域网语音聊天系统VC++实现
- 简单的OpenCV实现摄像头实时显示和视
- 基于SNMP的IP流量统计(VC++实现)源代
- 中国象棋引擎ZWM 版本0.2.(VC++源码)
- VS2010 MFC VC++ 学习教程资料 1-55
- VC++学生信息管理系统ADO连接数据库
- VC++网络嗅探器的设计与实现源代码及
- 仿QQ迷你首页迷你资讯MFC,VC++源代码
- 文件MD5查看器(VC++MFC)源代码
- VC++文件仿搜狗
评论
共有 条评论