我想自己取图做处理,调用摄像头时,用这个函数就有效,可以顺利抓到图片
可是链接已有AVI时,却出错了,
m_pMEvent->WaitForCompletion(INFINITE, &evCode)
一直没等到他停止m_pGrabber->SetBufferSamples(true)
m_pGrabber->SetOneShot(true)//--------------------------------------------
unsigned char* __fastcall TDShow::QueryFrame()
{
//TODO: Add your source code here
long evCode;
long size = 0; if(m_pMCtrl != NULL)
CHECK_RESULT_R(m_pMCtrl->Run());
//这里一直没等到
CHECK_RESULT_R(m_pMEvent->WaitForCompletion(INFINITE, &evCode)); //获取当前帧缓存大小
CHECK_RESULT_R(m_pGrabber->GetCurrentBuffer(&size,NULL)); //判断缓冲是否改变
if(size != m_nBufferSize)
{
if(m_pImgBuf) delete []m_pImgBuf;
m_nBufferSize = size;
m_pImgBuf = new unsigned char[m_nBufferSize];
} CHECK_RESULT_R(m_pGrabber->GetCurrentBuffer(&m_nBufferSize, (long*)m_pImgBuf));
return m_pImgBuf;
}
可是链接已有AVI时,却出错了,
m_pMEvent->WaitForCompletion(INFINITE, &evCode)
一直没等到他停止m_pGrabber->SetBufferSamples(true)
m_pGrabber->SetOneShot(true)//--------------------------------------------
unsigned char* __fastcall TDShow::QueryFrame()
{
//TODO: Add your source code here
long evCode;
long size = 0; if(m_pMCtrl != NULL)
CHECK_RESULT_R(m_pMCtrl->Run());
//这里一直没等到
CHECK_RESULT_R(m_pMEvent->WaitForCompletion(INFINITE, &evCode)); //获取当前帧缓存大小
CHECK_RESULT_R(m_pGrabber->GetCurrentBuffer(&size,NULL)); //判断缓冲是否改变
if(size != m_nBufferSize)
{
if(m_pImgBuf) delete []m_pImgBuf;
m_nBufferSize = size;
m_pImgBuf = new unsigned char[m_nBufferSize];
} CHECK_RESULT_R(m_pGrabber->GetCurrentBuffer(&m_nBufferSize, (long*)m_pImgBuf));
return m_pImgBuf;
}
我没有分,所以无比诚恳务实地占用了楼主的楼,谢谢。。