当前位置: 首页 > news >正文

[机器视觉]basler相机使用SN编号打开相机和采集

背景分析

在项目中是用basler相机采图时,一般用的比较多的遍历相机,然后使用CreateFirstDevice这个函数获取相机,有些时候可能需要同时连接多个相机,这里一般是遍历后,再循环打开相机,根据打开相机的SN号确定是否是自己需要的相机,但如果设备同时连接了多个相机,我们只使用其中的1到2个,这时遍历打开相机就会出现相机占用情况,而且相机数量多的时候,遍历相机和打开相机也比较耗时。

遍历打开相机

方法一:遍历所有相机,获取相机的SN编码跟配置文件中的SN进行对比,确认后再打开相机。

    //输入SN号std::string s = snNumber.toStdString();DeviceInfoList_t devList;//初始化PylonInitialize();CTlFactory& TlFactory = CTlFactory::GetInstance();int camNum = TlFactory.EnumerateDevices(devList);for(int i=0;i<camNum;i++){QString snName = QString(devList[i].GetSerialNumber());if(snNumber == snName){Pylon::IPylonDevice* pDevice = CTlFactory::GetInstance().CreateDevice( devList[i]);m_basler.RegisterImageEventHandler(this, RegistrationMode_Append, Cleanup_Delete);m_basler.Attach(pDevice,Cleanup_Delete);m_basler.Open();if (!m_basler.IsOpen() || m_basler.IsGrabbing()){qDebug()<<"camera open failed"<<Qt::endl;return;}}}

直接根据SN编码打开相机

方法二:在初始化后,直接将已知SN编号打开相机。

    //使用SN编码直接打开相机std::string s = snNumber.toStdString();PylonInitialize();CDeviceInfo info;info.SetSerialNumber(s.c_str());Pylon::IPylonDevice* pDevice = CTlFactory::GetInstance().CreateDevice(info);m_basler.RegisterImageEventHandler(this, RegistrationMode_Append, Cleanup_Delete);m_basler.Attach(pDevice,Cleanup_Delete);m_basler.Open();if (!m_basler.IsOpen() || m_basler.IsGrabbing()){qDebug()<<"camera open failed"<<Qt::endl;return;}

#注意事项 #
方法二适合在已确认连接好SN编号的相机的情况下初始化相机,如果找不到相机,则会出现创建相机错误的bug
相对而言,方法一对相机列表进行比对,可获知相机是否存在,然后再进行下一步操作。

http://www.lryc.cn/news/463487.html

相关文章:

  • C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串
  • Go语言基础学习(Go安装配置、基础语法)·
  • 高德开放平台API调用实战指南
  • 文档太大LLM处理不过来?这10种LangChain分割技术帮你搞定!
  • TikTok广告账号被封?常见原因及解决方法分享
  • maven聚合ssm
  • 网络通信与并发编程(二)基于tcp的套接字、基于udp的套接字、粘包现象
  • 400行程序写一个实时操作系统(十):用面向对象思想构建抢占式内核
  • C#学习笔记(九)
  • 意外发现!AI写作这样用,热点文章轻松超越同行90%!
  • WPF常见容器全方位介绍
  • 重置时把el-tree树节点选中状态取消
  • 服务器系统克隆技术
  • 【Java】多线程 Start() 与 run() (简洁实操)
  • 基于微信小程序的购物系统【附源码、文档】
  • AI绘画:24最新Stable Diffusion 终极炼丹宝典:从入门到精通!
  • 线性可分支持向量机的原理推导【补充知识部分】拉格朗日函数 公式解析
  • csdn(最新交流群)
  • 新手maven入门学习教程
  • React 中级阶段学习计划
  • [产品管理-47]:产品市场调研 - 一级市场、二级市场、次级市场?
  • Linux零基础教程学习(黑马)
  • 一款零依赖、跨平台的流媒体协议处理工具,支持 RTSP、WebRTC、RTMP 等视频流协议的处理
  • PHP 正则验证A-Z且排除某字母
  • 如何安全运行别人上传的Python代码?
  • matlab相位图
  • C语言笔记(指针的进阶)
  • NodeJS连接MySQL 8.4报错:code: ‘ER_TABLEACCESS_DENIED_ERROR‘
  • 力扣66~70题
  • Axure重要元件三——中继器添加数据