basler相机的关于触发模式的选择及更改

3 篇文章 1 订阅

最近在学习basler相机的触发方式和曝光时间的更改及多相机的连接,每天更新:

网口的相机和usb口的相机是不一样的。

 

曝光时间

触发信号的上升沿还是下降沿;

是否立即触发模式打开:

采集模式:

曝光时间的设置:

 

 

一般地来说,初始化相机,

m_basler.Attach(CTlFactory::GetInstance().CreateDevice(cInfo));

建立出相机的对象就可以,这步是进行连接相机“Attach”,连接了之后可以获得相机的ID。

INodeMap &cameraNodeMap = m_basler.GetNodeMap();
    CEnumerationPtr  ptrTriggerSel = cameraNodeMap.GetNode("TriggerSelector");
    ptrTriggerSel->FromString("FrameStart");
    CEnumerationPtr  ptrTrigger = cameraNodeMap.GetNode("TriggerMode");
    ptrTrigger->SetIntValue(1);
    CEnumerationPtr  ptrTriggerAcqMode = cameraNodeMap.GetNode("AcquisitionMode");
    ptrTriggerAcqMode->FromString("Continuous");
    CEnumerationPtr  ptrTriggerSource = cameraNodeMap.GetNode("TriggerSource");
    ptrTriggerSource->FromString("Software");


    const CFloatPtr exposureTime = cameraNodeMap.GetNode("ExposureTime");
    exposureTime->SetValue(10000);

    关于basler的sdk使用,可以看下:https://www.cnblogs.com/andyanut/p/9149067.html

 

 

另外,最近新发现的问题,basler的网口相机在执行外触发模式也就是“Line1”的情况下:

此时我通过关闭界面或者执行如下操作:

效果是丝毫没有用,你只是关闭了相机,但是相机对象还是存在的:

出现如下问题:

但你再次连接相机时:

IP助手会显示,当前的静态IP正在被使用:

 

解决方法:在执行完所有的程序后,需要退出相机的采集界面:

就不会出现下次连接出现IP被占用的情况了

 

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
您可以使用Basler相机SDK来实现外触发取图,以下是一个简单的C++代码示例: ```c++ #include <pylon/PylonIncludes.h> #include <iostream> using namespace Pylon; using namespace std; int main(int argc, char* argv[]) { PylonInitialize(); try { CInstantCamera camera(CTlFactory::GetInstance().CreateFirstDevice()); camera.Open(); // 设置触发模式为外触发 camera.TriggerSelector.SetValue(TriggerSelector_FrameStart); camera.TriggerMode.SetValue(TriggerMode_On); camera.TriggerSource.SetValue(TriggerSource_Line1); // 设置相机参数,如曝光时间、增益等 camera.ExposureTime.SetValue(10000); camera.Gain.SetValue(10); // 开始取图 camera.StartGrabbing(); // 循环获取图像 while (true) { // 等待图像准备好 camera.WaitForFrameTriggerReady(TimeoutHandling_Return); // 发送触发信号 camera.ExecuteSoftwareTrigger(); // 等待图像采集完成 CGrabResultPtr ptrGrabResult; camera.RetrieveResult(5000, ptrGrabResult, TimeoutHandling_ThrowException); // 处理图像 if (ptrGrabResult.IsValid()) { cout << "Grabbed image: " << ptrGrabResult->GetWidth() << " x " << ptrGrabResult->GetHeight() << endl; } } } catch (const GenericException& e) { cerr << "An exception occurred: " << e.GetDescription() << endl; exitCode = 1; } PylonTerminate(); return exitCode; } ``` 在代码中,`TriggerSelector`设置为`TriggerSelector_FrameStart`表示选择触发模式,`TriggerMode`设置为`TriggerMode_On`表示打开触发模式,`TriggerSource`设置为`TriggerSource_Line1`表示选择外部触发信号线1作为触发源。`ExposureTime`和`Gain`分别设置曝光时间和增益。 在循环中,使用`WaitForFrameTriggerReady`等待图像准备好,然后使用`ExecuteSoftwareTrigger`发送触发信号,最后使用`RetrieveResult`获取图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值