Ubuntu16.04 + FlyCapture 开发总结

1、升级Linux内核(按需升级,非必须)

$ uname -a    ##或者uname -r,查看当前使用的内核
$ sudo dpkg --get-selections |grep linux-image    ##查看已安装的内核列表
$ apt-cache search linux-image    ##查看可供安装的所有内核列表
$ sudo apt-get install linux-image-*.*.*-***-generic    ##安装相应版本的内核
$ sudo apt-get install linux-image-extra-*.*.*-***-generic    ##安装对应版本的内核
$ sudo reboot    ##重启计算机
$ sudo apt-get autoremove    ##自动卸载低版本内核
$ dpkg --get-selections | grep deinstall | sed 's/deinstall/\lpurge/' | sudo dpkg --set-selections; sudo dpkg -Pa    ##清理已卸载的内核

2、设置IP、巨型帧和缓冲区的大小

2.1、设置IP

编辑以太网的连接,将“IPv4设置”中的“方法”改为手动,然后输入地址、子网掩码和网关,如果后期需要上网,再添加一个可用的DNS服务器。保存并关闭。

Ubuntu16.04 + FlyCapture 开发总结_第1张图片

注意: 计算机的IP要和相机的IP在同一网段,即前三个数要相同,最后一个数不能相同。

2.2、设置巨型帧

首先在终端运行$ ifconfig,查看网络配置如下:

Ubuntu16.04 + FlyCapture 开发总结_第2张图片

然后运行命令:$ sudo ifconfig enp4s0 mtu 9000,这里的“enp4s0”以上图箭头所指具体参数为准。

2.3、设置缓冲区的大小

参考:http://www.ptgrey.com/kb/10016

  • 方法一

运行如下命令:

$ sudo sysctl -w net.core.rmem_max=1048576 net.core.rmem_default=1048576

该方法每次计算机重启后失效,需要重新运行上述命令。

  • 方法二

编辑/etc/sysctl.conf文件,在其末尾添加如下内容:

net.core.rmem_max=1048576
net.core.rmem_default=1048576

保存以后,在终端运行命令$ sudo sysctl -p

3、安装FlyCapture SDK

进入FlyCapture SDK官网,没有帐号的需要先注册个帐号,因为下载的时候需要登录。
Ubuntu16.04 + FlyCapture 开发总结_第3张图片
点击上图所示中的“下载 FlyCapture”,进入软件下载页面:
Ubuntu16.04 + FlyCapture 开发总结_第4张图片

根据使用的相机型号和系统版本选择正确的文件下载,博主这里下载的是“FlyCapture 2.12.3.31 SDK - Linux Ubuntu 16.04 (64-bit) — 06/21/2018 - 14.368MB”。

进入下载文件的路径,输入以下命令解压:

$ tar zxvf flycapture2-2.12.3.31-amd64-pkg.tgz

进入解压后的文件夹,先仔细阅读一下里面的README,由此我们知道,在安装SDK之前需要安装一些依赖,在终端运行如下命令:

$ sudo apt-get install libraw1394-11 libgtkmm-2.4-dev libglademm-2.4-dev libgtkglextmm-x11-1.2-dev libusb-1.0-0 libavcodec-ffmpeg56 libavformat-ffmpeg56 libswscale-ffmpeg3 libswresample-ffmpeg1 libavutil-ffmpeg54

安装完依赖,运行SDK的安装脚本:

$ sudo sh install_flycapture.sh

脚本运行完以后需要重启一下系统,FlyCapture SDK顺利安装成功,其文件系统的分布情况如下:

  • 可执行文件:/usr/bin
  • 头文件:/usr/include/flycapture
  • 运行库:/usr/lib
  • 开发文档:/usr/share/doc/flycapture-doc
  • 例程:/usr/src/flycapture

将相机接入计算机,做好相应的配置以后,在终端运行$ flycap,就可以选择相应的相机打开。

4、FlyCapture SDK+OpenCV编写自己的程序

先从我的GitHub上下载源码,然后运行以下命令创建工程文件夹:

$ mkdir project
$ cd project
$ mkdir src include build
$ touch CMakeLists.txt
$ gedit CMakeLists.txt

在CMakeLists.txt中粘贴以下内容:

cmake_minimum_required(VERSION 2.8)

project(flycapture_test)

set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin )

FIND_PACKAGE(OpenCV REQUIRED)

MESSAGE("OpenCV_DIR = " ${OpenCV_DIR})
MESSAGE("OpenCV_INCLUDE_DIRS = " ${OpenCV_INCLUDE_DIRS})
MESSAGE("OpenCV_LIBS = " ${OpenCV_LIBS})

INCLUDE_DIRECTORIES(
    include
    ${OpenCV_INCLUDE_DIRS}
    /usr/include/flycapture
    )

add_executable(${PROJECT_NAME} src/camnode.cpp)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS} /usr/lib/libflycapture.so )

将FLIR.h拷贝到include文件夹,将camnode.cpp拷贝到src文件夹,然后运行以下命令:

$ cd build
$ cmake ..
$ make

生成的可执行文件在工程文件夹的bin目录下。

5、程序使用说明

博主这里使用的相机型号是Blackfly BFLY-PGE-23S6C,CMOS的全局快门,最大分辨率为1920 × \times × 1200。将相机连接好以后,进入工程文件夹的bin目录,运行$ ./flycapture_test,程序会自动检测所有可用的相机,并打印它们相关的信息,效果如下图所示:

Ubuntu16.04 + FlyCapture 开发总结_第5张图片

博主计算机上接入了三个网口相机,并获得了它们的型号和IP地址,此时在终端输入一个想要打开的相机编号,回车即可:
Ubuntu16.04 + FlyCapture 开发总结_第6张图片
我在这里打开了编号为2(IP为192.168.1.102)的相机,此时采集图像的分辨率为640 × \times × 480。如果想要以其他分辨率打开,只需在./flycapture_test命令后加两个参数即可,如下图所示:
Ubuntu16.04 + FlyCapture 开发总结_第7张图片
此时我以752 × \times × 480的分辨率同样打开了IP为192.168.1.102的相机,我们发现,此时图像的画幅比上一次增宽了一些,所以这里的分辨率是指图像的大小,而不是像素密度。当程序后面不跟参数时,默认以640 × \times × 480的分辨率打开相机;当程序后面跟两个参数时,以指定分辨率打开相机。注意:给定的分辨率大小不能超过相机的最大分辨率。

附:ROS-FLIR

Over!

你可能感兴趣的:(机器视觉,Ubuntu系统)