$ 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 ##清理已卸载的内核
编辑以太网的连接,将“IPv4设置”中的“方法”改为手动,然后输入地址、子网掩码和网关,如果后期需要上网,再添加一个可用的DNS服务器。保存并关闭。
注意: 计算机的IP要和相机的IP在同一网段,即前三个数要相同,最后一个数不能相同。
首先在终端运行$ ifconfig
,查看网络配置如下:
然后运行命令:$ sudo ifconfig enp4s0 mtu 9000
,这里的“enp4s0”以上图箭头所指具体参数为准。
参考: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
。
进入FlyCapture SDK官网,没有帐号的需要先注册个帐号,因为下载的时候需要登录。
点击上图所示中的“下载 FlyCapture”,进入软件下载页面:
根据使用的相机型号和系统版本选择正确的文件下载,博主这里下载的是“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顺利安装成功,其文件系统的分布情况如下:
将相机接入计算机,做好相应的配置以后,在终端运行$ flycap
,就可以选择相应的相机打开。
先从我的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目录下。
博主这里使用的相机型号是Blackfly BFLY-PGE-23S6C,CMOS的全局快门,最大分辨率为1920 × \times × 1200。将相机连接好以后,进入工程文件夹的bin目录,运行$ ./flycapture_test
,程序会自动检测所有可用的相机,并打印它们相关的信息,效果如下图所示:
博主计算机上接入了三个网口相机,并获得了它们的型号和IP地址,此时在终端输入一个想要打开的相机编号,回车即可:
我在这里打开了编号为2(IP为192.168.1.102)的相机,此时采集图像的分辨率为640 × \times × 480。如果想要以其他分辨率打开,只需在./flycapture_test命令后加两个参数即可,如下图所示:
此时我以752 × \times × 480的分辨率同样打开了IP为192.168.1.102的相机,我们发现,此时图像的画幅比上一次增宽了一些,所以这里的分辨率是指图像的大小,而不是像素密度。当程序后面不跟参数时,默认以640 × \times × 480的分辨率打开相机;当程序后面跟两个参数时,以指定分辨率打开相机。注意:给定的分辨率大小不能超过相机的最大分辨率。