资源简介
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++ 多线程文件读写操作
- 移木块游戏,可以自编自玩,vc6.0编写
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC++实现CMD命令执行与获得返回信息
- QT实现USB摄像头拍照
- ESP32驱动摄像头
- 基于esp32的摄像头采集图像代码
- 基于STM32F407ZG的监控摄像头及FATFS文件
- WINcc与海康威视摄像头
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- 基于VC++的SolidWorks二次开发SolidWorks
- 派克变换VC++源码(附文档)
- VC++ 串口
- VC++ 大富翁4_大富翁游戏源码
- VC++ 摄像头视频采集与回放源程序
- 转 VC++ 实现电子邮件(Email)发送
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
- 基于改进的fcm算法的图像分割vc++
- VC++6.0 绿色版,免安装,非常好用。
- Microsoft Visual C++ 2005 Redistributable Pack
- VC++MFC课程设计的学生成绩管理系统
- 大智慧365DLL插件设计
- VC++6.0汉化包
- VC++完整商业界面源码(再上传)
- VC++编程技术600个大型项目源码.rar
- VC++实现RSA加密算法
- VC++ 中国象棋经典游戏源代码
评论
共有 条评论