image source相机snap模式采集
2015-07-23 14:45
316 查看
</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被注释之后仍然可以采集到图像,这是什么情况?
相关文章推荐
- Oracle CheckPoint进程
- 牛腩新闻发布系统完成总结
- hadoop2.x HDFS快照介绍
- Object类的重要方法
- nyoj-664-数字整除(水题)
- [ASP.NET MVC 小牛之路]08 - Area 使用
- UVALive 4080 Warfare And Logistics(Dijkstra+最短路树)
- Xcode 6制作动态及静态Framework
- linux 下取进程占用 cpu/内存 最高的前10个进程
- java 基础回顾1
- JavaBean的使用
- Linux下SCP的使用
- the solution about "messy code" in elicpse
- [python]csv格式文件的使用
- Struts2工作原理分析
- OC学习self和super关键字(了解)
- VDSL交换机和普通交换机有什么不同
- Spring基础知识汇总
- HDU-1234开门人和关门人(sort函数对结构体的排序)
- jsp学习笔记