image source相机snap模式采集

</pre><p></p><p></p><pre name="code" class="html">// snapimage.cpp : 定义控制台应用程序的入口点。

/
#include <iostream>
///添加相机需要的头文件
#include <tisudshl.h>
#include "../Common/CmdHelper.h"


///添加所需要的名词空间
using namespace _DSHOWLIB_NAMESPACE;

int _tmain(int argc, _TCHAR* argv[])

{
	初始化的类库
	DShowLib::InitLibrary();


	///创建采集对象
	
	Grabber grabber;


	//显示相机的参数设置的属性页,同时保存相机的设置
	

	if( !setupDeviceFromFile( grabber ) )
	{
		return -1;
	}
    
	创建的相机采集的图像的格式内存

	tFrameHandlerSinkPtr pSink= FrameHandlerSink::create(eY800,1);

	///设计采集图像的模式,设置true为snap采图模式,设置false为grab采集模式
	pSink->setSnapMode(true);
	
	将采集程序和内存设置为pSink
	grabber.setSinkType(pSink);

	判断程序采集程序是否打开
	if (!grabber.prepareLive(false))
	{
		std::cerr<<"无法将视频格式转化为eY800格式";
		return -1;//退出程序
	}

    
	FrameTypeInfo info;
	pSink->getOutputFrameType(info);


	/创建8位字节的内存,用于输出图像数据

    BYTE *pbuf[5];
	for (int i=0;i<5;++i)
	{
		pbuf[i]=new BYTE[info.buffersize];
		///获取每张图片需要的内存
	}

	//
   tMemBufferCollectionPtr pCollection = MemBufferCollection::create( info, 5, pbuf );



   Start live mode for fast snapping. The live video will not be displayed,
 // because false is passed to startLive().
  	grabber.startLive( false );

   /采集5幅图像

   pSink->snapImages( 5 );


   //关闭采集的对象
   grabber.closeDev();
   //关闭对象
   grabber.stopLive();

   ///释放所创建的内存
   pCollection->save("file*.bmp");



   ///释放中间所创建的内存

   for (int j=0;j<5;++j)
   {
	   delete pbuf[j];
   }

	return 0;
}
<pre name="code" class="cpp">	
grabber.startLive( false );


   /采集5幅图像


   pSink->snapImages( 5 );
 

snap  image()  以及startlive被注释之后仍然可以采集到图像,这是什么情况?

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值