basler相机采集程序
2015-08-03 17:41
579 查看
该例程显示了如何利用CInstantCamera class这个类进行图像的抓取以及处理,图像的抓去和显示是异步进行的,当应用在处理一个buffer时,对于下一个buffer的获取是并行执行的。CInstantCamera class 使用一个内存池从相机设备检测图像数据,一旦一个buffer得到数据,这个buffer将会被检索到并进行处理,这个buffer和额外的数据将会存放在获取图像的结果中,而该结果对应了一个相应的指针。当释放内存时候或者指针对象被摧毁时,该缓冲数据将自动销毁。
namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。 C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
catch用于获取中间的异常
namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。 C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
#include <pylon/PylonIncludes.h> #include <pylon/PylonGUI.h> // 相机的名词空间 using namespace Pylon; // c++标准类库用于输出 using namespace std; // 采集的图像的数量,<span style="font-family: Arial, Helvetica, sans-serif;">uint32_t 为定义类型</span> static const uint32_t c_countOfImagesToGrab = 10相机的初始化
int main(int argc, char* argv[]) {
//exitcode用于判断程序退出的方式 int exitCode = 0; Pylon::PylonAutoInitTerm autoInitTerm;使用try { ....} 进行相机的图像的采集,结合GenICam::GenericException查找程序的异常
try { //创建相机对象 CInstantCamera camera( CTlFactory::GetInstance().CreateFirstDevice()); //输出相机的型号,cout输出字符串时需要双引号,但如果输出的类型为char 类型则不需要,endl用于换行 cout << "Using device " << camera.GetDeviceInfo().GetModelName() << endl; //设置图像的缓存个数 camera.MaxNumBuffer = 5; //开始100幅图像相机的采集,相机采用默认设置 camera.StartGrabbing( c_countOfImagesToGrab); ////设置指针储存图像的结果 CGrabResultPtr ptrGrabResult; while ( camera.IsGrabbing()) { //索引一幅图像,设置等待时间5000ms camera.RetrieveResult( 5000, ptrGrabResult, TimeoutHandling_ThrowException); // Image grabbed successfully? if (ptrGrabResult->GrabSucceeded()) { // Access the image data. cout << "SizeX: " << ptrGrabResult->GetWidth() << endl; cout << "SizeY: " << ptrGrabResult->GetHeight() << endl; const uint8_t *pImageBuffer = (uint8_t *) ptrGrabResult->GetBuffer(); cout << "Gray value of first pixel: " << (uint32_t) pImageBuffer[0] << endl << endl; // SDk中封装单文档显示界面 Pylon::DisplayImage(1, ptrGrabResult); } else { cout << "Error: " << ptrGrabResult->GetErrorCode() << " " << ptrGrabResult->GetErrorDescription(); } } }
catch用于获取中间的异常
catch (GenICam::GenericException &e) { cerr << "An exception occurred." << endl << e.GetDescription() << endl; exitCode = 1; } 如果输入的字符为enter,则退出程序 cerr << endl << "Press Enter to exit." << endl; while( cin.get() != '\n'); return exitCode;
相关文章推荐
- 矩形面积求并
- 关于Android原生Email的自己的一些认识
- session详解
- block 页面传值
- 多个Button的动画
- 音乐播放器
- Apache的prefork模式和worker模式
- AOP术语
- ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证
- CentOS6.5双网卡绑定
- 提取手机上的联系人号码制作通讯录
- HDU 1171 Big Event in HDU(多重背包)
- hdoj-1171-Big Event in HDU【动态规划】
- 发布订阅机制
- centos swig 编译c,python调用
- 还好活下来了
- “The run destination iOS Device is not valid for running the scheme”
- 一行字符中寻找英文单词个数
- url
- java发送邮件(1)