FLIR相机图像延迟解决方案

采用FLIR 相机,基于Spinnaker SDK写的程序在运行一段时间后总是出现延时有时会长达几秒,经过分析发现FLIR 相机默认的是有buffer缓存,默认10帧,且StreamBufferHandlingMode默认为OldestFirst, 这个参数在SpinView设置后,并不能保存,再用程序启动还是默认参数,必须在驱动里面设置MODE: StreamBufferHandlingMode_NewestOnly,设置缓存帧数为1(不能设置为0)。相关说明参考Spinnaker C++ API:

相关设置程序可以参考自带的demo,或者参考链接:https://github.com/Arche-Logos/kinect-playbacker/wiki

    Spinnaker::GenApi::INodeMap &snodeMap = pCam->GetTLStreamNodeMap();
    Spinnaker::GenApi::CEnumerationPtr ptrStreamBufferCountMode = snodeMap.GetNode("StreamBufferCountMode");
    if (IsReadable(ptrStreamBufferCountMode) && IsWritable(ptrStreamBufferCountMode))
      ptrStreamBufferCountMode->SetIntValue(0);//0:Manual(取值范围1-1302) 1:Auto (设为auto时,StreamBufferCountManual 无法修改,默认为10)
    else
      std::cout << "Unable to set StreamBufferCountMode." << std::endl;

    Spinnaker::GenApi::CEnumerationPtr ptrStreamBufferHandlingMode = snodeMap.GetNode("StreamBufferHandlingMode");
    if (IsReadable(ptrStreamBufferHandlingMode) && IsWritable(ptrStreamBufferHandlingMode))
    {
      std::cerr<<"[ FLIR ] current StreamBufferHandlingMode vlaue: "<<ptrStreamBufferHandlingMode->GetIntValue()<<endl;
      ptrStreamBufferHandlingMode->SetIntValue(4); // 4:NewestOnly
    }
    else
      std::cout << "Unable to set StreamBufferHandlingMode." << std::endl;
    std::cerr<<"[ FLIR ] current StreamBufferHandlingMode vlaue: "<<ptrStreamBufferHandlingMode->GetIntValue()<<endl;

    Spinnaker::GenApi::CIntegerPtr ptrStreamBufferCountManual = snodeMap.GetNode("StreamBufferCountManual");
    if (IsReadable(ptrStreamBufferCountManual) && IsWritable(ptrStreamBufferCountManual))
    {
      std::cerr<<"[ FLIR ] current ptrStreamBufferCountManual vlaue: "<<ptrStreamBufferCountManual->GetValue()<<endl;
      ptrStreamBufferCountManual->SetValue(1);//取值范围1-1302
    }
    else
      std::cout << "Unable to set StreamBufferCountManual." << std::endl;

 

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值