• 大小: 4.15MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-01
  • 语言: C/C++
  • 标签: vc++  摄像头  拍照  

资源简介

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个文件信息

评论

共有 条评论