热点新闻
[机器视觉]basler相机使用SN编号打开相机和采集
2024-10-13 03:36  浏览:1784  搜索引擎搜索“手机财发网”
温馨提示:为防找不到此信息,请务必收藏信息以备急用! 联系我时,请说明是在手机财发网看到的信息,谢谢。
展会发布 展会网站大全 办理VIP 软文发布

背景分析

在项目中是用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
相对而言,方法一对相机列表进行比对,可获知相机是否存在,然后再进行下一步操作。

发布人:1c0d****    IP:124.223.189***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发