如何设置ISampleGrabber::SetCallback来抓取BMP图片(dshow小问题)

King_Dragon 2003-07-14 09:33:45
现有一任务是要实时的抓取视频捕捉卡的图片信息,对图片信息进行分析和采样。程序在图片抓取的地方卡壳了,偶不知道怎样设置ISampleGrabber::SetCallback来进行图片的抓取,希望能给出完整的例子或者是完整的说明(偶对dshow不熟悉)
...全文
360 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bruce5260 2003-07-17
  • 打赏
  • 举报
回复
class CSampleGrabberCB : public ISampleGrabberCB
{
public:
// these will get set by the main thread below. We need to
// know this in order to write out the bmp
long lWidth;
long lHeight;

CCaptureToBitmap * pOwner;//这里是怎样解析的
//因为这里.h文件包括近来了
char m_szCapDir[MAX_PATH]; // the directory we want to capture to
char m_szSnappedName[MAX_PATH];
BOOL bFileWritten;

CSampleGrabberCB( )
{
pOwner = NULL;
m_szCapDir[0] = 0;
bFileWritten = FALSE;


}

// fake out any COM ref counting
//
STDMETHODIMP_(ULONG) AddRef() { return 2; }
STDMETHODIMP_(ULONG) Release() { return 1; }

// fake out any COM QI'ing
//
STDMETHODIMP QueryInterface(REFIID riid, void ** ppv)
{
if( riid == IID_ISampleGrabberCB || riid == IID_IUnknown )
{
*ppv = (void *) static_cast<ISampleGrabberCB*> ( this );
return NOERROR;
}
return E_NOINTERFACE;
}

// we don't implement this interface for this example
//
STDMETHODIMP SampleCB( double SampleTime, IMediaSample * pSample )
{
return 0;
}

STDMETHODIMP BufferCB( double dblSampleTime, BYTE * pBuffer, long lBufferSize );
// This is the implementation function that writes the captured video
// data onto a bitmap on the user's disk.
//
BOOL CopyBitmap( double dblSampleTime, BYTE * pBuffer, long lBufferSize );


};

//-----------------------
/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CAPTURETOBITMAP_H__2A36988C_9FFD_43CA_AB55_CBEB1E2CDCD7__INCLUDED_)
////////////////////////////////////

m_pGrabber->SetCallback( &mCB, 1 );
//调用ISampleGrabber::BufferCB

autoegg 2003-07-14
  • 打赏
  • 举报
回复
我当时也有这个问题,后来用IMediaDet接口的WriteBitmapBits函数就可以了,很方便的。
具体见SDK吧。:)

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧