一、下载安装balser SDK
https://www.baslerweb.com/cn/downloads/software-downloads/#type=pylonsoftware
选择5.2.0版本比较稳定
解压pylon-5.2.0.13457-x86_64.tar.gz
得到pylon-5.2.0.13457-x86_64文件夹

cd pylon-5.2.0.13457-x86_64

解压pylonSDK-5.2.0.13457-x86_64.tar.gz
得到pylon5文件夹
拷贝到/opt/下并安装

sudo cp -r pylon /opt/
cd /opt/
source /opt/pylon5/bin/pylon-setup-env.sh pylon5

将系统和相机利用路由器连接在同一个局域网内,打开软件搜索相机IP并改成固定IP,就可以打开相机看实时图像了

sudo /opt/pylon5/bin/PylonViewerApp

编写如下cpp程序尝试抓图

#include <pylon/PylonIncludes.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/video.hpp>using namespace Pylon;
using namespace std;
using namespace cv;int main(int argc, char* argv[])
{Mat src;CImageFormatConverter formatConverter;formatConverter.OutputPixelFormat = PixelType_BGR8packed;int grabbedlmages = 0;CPylonImage pylonImage;int exitCode = 0;PylonInitialize();try{CInstantCamera camera( CTlFactory::GetInstance().CreateFirstDevice());cout << "Using device " << camera.GetDeviceInfo().GetModelName() << endl <<"IP: " << camera.GetDeviceInfo().GetAddress() << endl;camera.MaxNumBuffer = 5;const unsigned int c_countOfImagesToGrab = 100;camera.StartGrabbing( c_countOfImagesToGrab);CGrabResultPtr ptrGrabResult;while ( camera.IsGrabbing()){camera.RetrieveResult( 5000, ptrGrabResult, TimeoutHandling_ThrowException);if (ptrGrabResult->GrabSucceeded()){cout << "SizeX: " << ptrGrabResult->GetWidth() << endl;cout << "SizeY: " << ptrGrabResult->GetHeight() << endl;formatConverter.Convert(pylonImage, ptrGrabResult);src = cv::Mat(ptrGrabResult->GetHeight(), ptrGrabResult->GetWidth(), CV_8UC3, (uint8_t *) pylonImage.GetBuffer());if (false){std::ostringstream s;s << grabbedlmages << ".jpg";std::string imageName(s.str());imwrite(imageName, src);grabbedlmages++;}namedWindow("OpenCV Display Window", CV_WINDOW_NORMAL); // other options: CV_AUTOSIZE, CV_FREERATIOimshow("OpenCV Display Window", src);waitKey(1);const uint8_t *pImageBuffer = (uint8_t *) ptrGrabResult->GetBuffer();cout << "Gray value of first pixel: " << (uint32_t) pImageBuffer[0] << endl << endl;}else{cout << "Error: " << ptrGrabResult->GetErrorCode() << " " << ptrGrabResult->GetErrorDescription() << endl;}}}catch (const GenericException &e){cerr << "An exception occurred." << endl<< e.GetDescription() << endl;exitCode = 1;}cerr << endl << "Press Enter to exit." << endl;while( cin.get() != '\n');PylonTerminate();return exitCode;
}

CMakeLists文件编辑如下

cmake_minimum_required(VERSION 3.18)
project(PylonGrab)find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})set(PYLON_INCLUDE_DIRS
/opt/pylon5/include
/opt/pylon5/include/Base
/opt/pylon5/include/GenApi
/opt/pylon5/include/pylon
/opt/pylon5/include/bconadapter
/opt/pylon5/include/genapic
/opt/pylon5/include/pylonc
/opt/pylon5/include/FirmwareUpdate
)
FILE (GLOB PYLON_LIBS "/opt/pylon5/lib64/lib*.so" )
set(PYLON_LIBS_DIRS /opt/pylon5/lib64)
include_directories(${PYLON_INCLUDE_DIRS})
link_directories(${PYLON_LIBS_DIRS})add_executable(PylonGrab pylon.cc)
target_link_libraries(PylonGrab
${OpenCV_LIBS}
${PYLON_LIBS}
)
1. DeviceRemovalHanding
如何检测相机设备的移除(removal),如何重连去除的相机设备
代码:CSampleConfigurationEventHandler2. Grab
如何用CInstantCamera类抓取和处理图像。camera.StartGrabbing( c_countOfImagesToGrab );抓取c_countOfImagesToGrab数量的图像。3. Grab_CameraEvents
相机发送event messages (比如exposure end)给计算机,CInstantCamera可以通过注册camera event handler,自动抓取和处理event messages,保存在node map里。
介绍了两个camera events: Exposre End(曝光图像数量,事件时间等), Event Overrun。
代码:CSoftwareTriggerConfiguration, CSampleCameraEventHandler, CSampleImageEventHandler4. Grab_ChunkImage
利用 data chunks feature, 如何抓取图像,处理附加数据 (frame count, time stamp, CRC checksums)。在chunk mode下,传输数据分成不同数据块。
代码:CBaslerUniversalGrabResultPtr, CSampleImageEventHandler5. Grab_MultiCast
multi cast即两个电脑上的运行相同程序,接收同一个相机的数据。6. Grab_MultipleCameras
利用CInstantCameraArray类抓取和处理来自多个相机的图像。7. Grab_Strategies
使用CInstantCamera的抓取策略:
GrabStrategy_OneByOne: 根据图像获取顺序依次处理。当需要处理所有抓取的图像时,该策略可用。比如在生产和质量监控中。
GrabStrategy_LatestImageOnly 和GrabStrategy_LatestImages:用于当获取的图像只在屏幕上显示。
GrabStrategy_UpcomingImage : 确保调用RetrieveResult()后,获得已被抓取的图像。8 Grab_UsingActionCommand
只适用 Basler GigE Vision相机。向多个相机发出GigE Vision ACTION_CMD。通过使用action command,可以同时trigger多个相机。而利用software triggering,每个相机需要单独触发。
代码:
IGigETransportLayer: issue action command。
CActionTriggerConfiguration: set up the basic action command features9. Grab_UsingBufferFactory
使用用户提供的Buffer factory。可选,用于高级用例。只有打算抓取数据到外部提供缓存时,使用buffer factory。
代码:
MyBufferFactory: 用户提供的buffer factory。
SetBufferFactory10 Grab_UsingExposureEndEvent
使用Exposure End 事件,加速图像获取。比如,当传感器曝光结束,相机发送Exposure End事件给计算机。计算机可以在图像传输完成前,接收到事件。
这可以避免不必要的延迟:在图像数据未完成传输时,移动图像对象。
代码:
MyEvents
CEventHandle11. Grab_UsingGrabLoopThread
利用CInstantCamera提供的grab loop thread抓取和处理图像。12. Grab_UsingSequencer
使用Sequencer feature来抓取图像,使用三个sequence set获取图像,每个sequence set使用不同的图像高度。13 GUI_ImageWindow
使用CPylonImageWindow类显示图像。14 GUI_Sample
使用MFC GUI和pylon C++ API来枚举相机,配置相机,开始/停止抓取,显示/存储抓取图像。
利用GUI控制来显示和修改相机参数。15 GUI_SampleMultiCam
使用MFC GUI 和pylon C++ API, 操作多个相机。16 ParametrizeCamera_AutoFunctions
使用Basler相机的auto functions, 比如, Gain Auto, Exposure Auto, Balance White Auto。自动调整相机参数。17. ParametrizeCamera_Configurations
使用现有configuration event, 注册自己的configuration event handler。
configuration event handler继承自CConfigurationEventHandler,并重写虚函数。当相机状态改变,event handler的函数被调用。18. ParametrizeCamera_GenericParameterAccess
对于相机配置和参数访问,pylon API 使用GenlCam标准定义的技术。代码中,利用GenApi::INodeMap访问各种参数。19. ParametrizeCamera_LoadAndSave
利用CFeaturePersistence, 保存(加载)相机特征(node map)到(从)文件。20. ParametrizeCamera_LookupTable
使用独立于相机接口的亮度查找表(Luminance Lookup Table, LUT)特征。查找表的用处:replace the pixel values in your images by values defined by you.21. ParametrizeCamera_NativeParameterAccess
使用device-specific的instant Camera class,配置相机22. ParametrizeCamera_SerialCommunication
使用ace 2 Pro 相机支持的 串行通信(Serial Communication) 特征。23. ParametrizeCamera_Shading
计算和上传gain shading sets给相机
CreateShadingData()假设曝光条件(光照,曝光时间)已经设置好,能获取强度均匀的图像(images of uniform intensity),但是获取的图像并不均匀。因此计算gain shading 数据,补偿观测到的不均匀(non-uniformity)。gain shading 数据保存在本地文件中。
UploadFile(): 将计算的gain shading data从本地文件发送到相机。24. ParametrizeCamera_UserSets
使用用户配置集合(user configuration sets, User Set), 配置相机使其利用用户定义的设置(user set 1)开启。
也可以利用pylon Viewer配置相机,然后保存自定义设置到一个user set。25 Utility_GrabAvi
在windows系统下,生成 Audio Video InterLeave (AVI)格式的视频。26 Utility_GrabVideo
生成MP4格式的视频。假定pylon Supplementary Package for MPEG-4已经安装。27 Utility_Image
使用pylon图像类CPylonImage 和CPylonBitmapImage。
CPylonImage支持处理不同像素类型的图像缓存
CPylonBitmapImage: 可以用来创建窗口位图来显示图像。另外,pylon有两个图像类相关接口(IImage和IReusableImage)
IImage可以用来访问图像属性,图像缓存。
IReusableImage接口拓展了IImage接口,能够重新使用图像资源,来表示一个不同的图像。28. Utility_ImageDecompressor
使用Basler Compression Beyond特征。压缩图像。29. Utility_ImageFormatConverter
使用CImageFormatConverter类。30. Utility_ImageLoadAndSave
使用CImagePersistence类,加载和保存图像。使用了图像类相关的pylon接口IImage和IReusableImage。
IImage可以用来访问图像属性和图像缓存。因此,保存图像可以使用。
IReusableImage在记载图像时使用。31. Utility_InstantInterface
使用CInstantInterface类访问接口参数。该例子展示了如何访问Power-over-CoaXPress 设置,检测power usage。32. Utility_IpConfig
配置GigE Vision相机的IP地址。

ubuntu basler相机opencv相关推荐

  1. ubuntu Basler相机怎么设置静态IP

    1. 在basler官网下载baler相机ubuntu驱动,并安装,默认安装地址为/opt/pylon5 https://www.baslerweb.com/cn/sales-support/down ...

  2. Basler|基于OpenCV的Basler相机采集图像程序

    http://www.ithao123.cn/content-8057925.html 采用Basler4.0SDK编写,利用Event机制在回调函数中生成灰度图像 回调函数中图像生成代码,利用CCD ...

  3. basler 相机取图超时_Basler|基于OpenCV的Basler相机采集图像程序

    采用Basler4.0SDK编写,利用Event机制在回调函数中生成灰度图像 回调函数中图像生成代码,利用CCD中获取的无符号字符型数组转变成 Mat类型 Mat grab( siz, CV_8UC1 ...

  4. basler相机外部硬触发,转换图像格式并发送到ROS下的topic

    运行环境:Ubuntu20.04 (64-Bit) 运行软件:pylon Viewer 64-Bit,pylon Release 6.3.0 相机型号:acA 1920-25gc (GigE接口) 触 ...

  5. Ubuntu20.04 ROS读取basler相机图像步骤。MATLAB2021b标定basler单目相机

    运行环境:Ubuntu20.04(64-Bit) ROS版本:Noetic 网卡型号:Realtek RTL 8156外置网卡 相机型号:acA 1920-25gc (GigE接口) 驱动版本:pyl ...

  6. Basler相机内参标定及Basler相机和Livox-avia激光雷达联合标定

    本次相机内参标定及相机-激光雷达联合标定采用的数据为同一批.数据采集系统:ubuntu-20.04,ROS-noetic. 前期准备 关于系统安装以及ROS环境配置,在这里不写出具体步骤,可查阅其他相 ...

  7. Basler相机开发(一)

    Basler相机开发 配合OPenCV做一些小应用开发 文章目录 环境配置 配置工具 开发流程 API介绍 Programmer's Guide 环境配置 参考文档:https://zh.docs.b ...

  8. 基于pylon嵌入式目标应用(Basler相机)

    基于pylon嵌入式目标应用(Basler相机) 1简介 pylon Camera软件套件(简称"pylon")是Basler的软件包,它包含易于使用的SDK.驱动程序和工具,使您 ...

  9. Ubuntu18.04安装basler相机的ROS驱动程序pylon_ros_camera

    系统:Ubuntu 18.04 64位,ROS:melodic 安装basler单目相机驱动之前需要安装ROS,安装过程见我之前发的博客,一定要确保rosdep update成功,否则可能会导致安装失 ...

最新文章

  1. CSS3的chapter3
  2. mysql数据库应用的权限层级_MySQL数据库的用户权限管理
  3. NLP《词汇表示方法(二)词嵌入表示》
  4. php报内存溢出,php为什么运行了一段时间后才报内存溢出?
  5. 三星s3android wear,三星galaxy wearable下载
  6. 十分钟-Nginx入门到上线
  7. 电脑机房用成品——名词解释
  8. python opencv车辆测速视频汽车速度检测入侵检测测速
  9. excel在线_EXcel怎么把中文翻译英文?简单2招秒翻译
  10. 局域网内如何通过代理上网
  11. 移动App测试中的最佳做法
  12. PowerDesigner清理注册表
  13. 速途研究院联合融云:中国移动社交沟通指数报告
  14. 餐饮门店每日业务情况数据分析仪表盘(外卖平台)
  15. ESXI-vCenter-NSX-系统虚拟化
  16. QuickBooks qbo api transactionlist 获取数据不全的问题
  17. 液晶显示器电源板工作原理
  18. 这些阻碍程序员升职加薪的行为,你中招了几个?
  19. 虚拟机下安装cad2006和南方cass7.0
  20. 随机装箱算法(Random Binning Features)

热门文章

  1. java 项目 预警_java开发中的常见代码黄线预警
  2. 怎样使左侧菜单栏不随滚动条滚动
  3. 'BMap' is not defined 解决方案
  4. idea运行web项目
  5. 《离散数学》学习笔记
  6. GB50345-2012 屋面工程技术规范 免费下载
  7. threejs 展示gltf模型加了环境光,全黑
  8. 饿了么开放平台接入(2)——使用Java对接店铺
  9. 金色传说:SAP-BC-RZ10/RZ11:经典常用参数
  10. ARM——LED灯实验