云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 摄像头图像采集程序与分析

摄像头图像采集程序与分析

  • 62 次阅读
  • 3 次下载
  • 2026/1/11 20:35:52

registered?\ return hr; }

CComQIPtr < IBaseFilter, &IID_IBaseFilter > pGrabBase( m_pGrabber ); //设置视频格式 AM_MEDIA_TYPE mt;

ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE)); mt.majortype = MEDIATYPE_Video; mt.subtype = MEDIASUBTYPE_RGB24; hr = m_pGrabber-> SetMediaType(&mt); if( FAILED( hr ) ){

AfxMessageBox(\ return hr; }

hr = m_pGB-> AddFilter( pGrabBase, L\ 14 / 17

if( FAILED( hr ) ){

AfxMessageBox(\ return hr; }

// try to render preview/capture pin

hr = m_pCapture-> RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,m_pBF,pGrabBase,NULL); if( FAILED( hr ) )

hr = m_pCapture-> RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,m_pBF,pGrabBase,NULL); if( FAILED( hr ) ){

AfxMessageBox(\ return hr; }

hr = m_pGrabber-> GetConnectedMediaType( &mt );

if ( FAILED( hr) ){

AfxMessageBox(\ return hr; }

VIDEOINFOHEADER * vih = (VIDEOINFOHEADER*) mt.pbFormat; mCB.lWidth = vih-> bmiHeader.biWidth; mCB.lHeight = vih-> bmiHeader.biHeight; FreeMediaType(mt);

hr = m_pGrabber-> SetBufferSamples( FALSE ); hr = m_pGrabber-> SetOneShot( FALSE ); hr = m_pGrabber-> SetCallback( &mCB, 1 ); //设置视频捕捉窗口 m_hWnd = hWnd ; SetupVideoWindow();

hr = m_pMC-> Run();//开始视频捕捉

if(FAILED(hr)){AfxMessageBox(\ return S_OK; }

bool CCaptureVideo::BindFilter(int deviceId, IBaseFilter **pFilter) {

if (deviceId < 0) return false;

// enumerate all video capture devices CComPtr pCreateDevEnum;

HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,

IID_ICreateDevEnum, (void**)&pCreateDevEnum); if (hr != NOERROR) 15 / 17 {

return false; } CComPtr pEm; hr

=

pCreateDevEnum->

CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm, 0);

if (hr != NOERROR) {

return false; }

pEm-> Reset(); ULONG cFetched; IMoniker *pM; int index = 0;

while(hr = pEm-> Next(1, &pM, &cFetched), hr==S_OK, index <= deviceId) {

IPropertyBag *pBag;

hr = pM-> BindToStorage(0, 0, IID_IPropertyBag, (void **)&pBag); if(SUCCEEDED(hr)) {

VARIANT var; var.vt = VT_BSTR;

hr = pBag-> Read(L\ if (hr == NOERROR) {

if (index == deviceId) {

pM-> BindToObject(0, 0, IID_IBaseFilter, (void**)pFilter); }

SysFreeString(var.bstrVal);

}

pBag-> Release(); }

pM-> Release(); index++; }

return true; }

HRESULT CCaptureVideo::InitCaptureGraphBuilder() {

HRESULT hr;

// 创建 IGraphBuilder 接口

hr=CoCreateInstance(CLSID_FilterGraph, CLSCTX_INPROC_SERVER, 16 / 17

IID_IGraphBuilder, (void **)&m_pGB); // 创建 ICaptureGraphBuilder2接口 hr

=

CoCreateInstance

(CLSID_CaptureGraphBuilder2

,

NULL, NULL,

CLSCTX_INPROC,

IID_ICaptureGraphBuilder2, (void **) &m_pCapture); if (FAILED(hr))return hr;

m_pCapture-> SetFiltergraph(m_pGB);

hr = m_pGB-> QueryInterface(IID_IMediaControl, (void **)&m_pMC); if (FAILED(hr))return hr;

hr = m_pGB-> QueryInterface(IID_IVideoWindow, (LPVOID *) &m_pVW); if (FAILED(hr))return hr; return hr; }

HRESULT CCaptureVideo::SetupVideoWindow() {

HRESULT hr;

搜索更多关于: 摄像头图像采集程序与分析 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

registered?\ return hr; } CComQIPtr pGrabBase( m_pGrabber ); //设置视频格式 AM_MEDIA_TYPE mt; ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE)); mt.majortype = MEDIATYPE_Video; mt.subtype = MEDIASUBTYPE_RGB24; hr = m_pGrabber-> SetMediaType(&mt); if( FAILED( hr ) ){ AfxMessageBox(\ return hr;

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com