Linux环境下OpenCV的安装与配置
Linux下OpenCV的安装
- cmake以及相关依赖库的安装
因为OpenCV2.2版本之后,需要用cmake来生成Makefile文件,因此在安装OpenCV之前,要安装cmake以及cmake依赖库。
终端输入:apt-get install cmake
apt-get install build-essential libgtk2.0-dev libavcodec-dev
libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
安装完成后输入:cmake -version检查cmake是否安装成功
2.opencv的安装
我们都知道,在linux下安装第三方软件时要用到第三方软件的头文件以及相关库,在编译安装时指定库和头文件是十分麻烦的,而pkg-config能够把这些头文件和库文件的位置指出来,给编译器使用。因此我们可以安装pkg-config来减轻工作量。
终端输入:apt-get install pkg-config
OpenCV的下载地址为:http://www.opencv.org.cn/index.php/Download
之后将文件通过VMware的共享文件夹将文件发送到linux下
进入共享文件夹,将文件复制到指定目录
终端输入:cp opencv-3.4.3.zip /nfsroot/opencv
进入实验目录/nfsroot/opencv进行OpenCV的安装
终端输入:unzip opencv-3.4.3.zip
解压完成后将在改目录下生成opencv-3.4.3目录
进入该目录,新建一个目录进行OpenCV的编译目录(否则会报以下错误)
终端输入:mkdir build
cd bulid
cmake ..
发现不能执行,并且报错情况如下:
这是提示我们需要Cmake 2.8.12.2或更高版本的Cmake,当前版本为2.8.7
因此我们需要下载更高版本的Cmake
3.下载更高版本的Cmake
终端输入:apt-get autoremove cmake,卸载Cmake
apt-get install build-essential
wget http://www.cmake.org/files/v3.12/cmake-3.12.3.tar.gz
执行过程中,系统提示:
错误: 没有匹配的证书主体别名 (Subject Alternative Name)。
请求的主机名为 “cmake.org”。
要以不安全的方式连接至 cmake.org,使用“--no-check-certificate”。
因此在wget http://www.cmake.org/files/v3.12/cmake-3.12.3.tar.gz后加上该指令
之后便将cmake-3.12.3.tar.gz保存到当前目录
在/usr/local目录下新建cmake目录,用来安装cmake
终端输入cp cmake-3.12.3.tar.gz /usr/local/cmake,将文件拷贝到指定目录
进入该目录,终端输入:tar xzvf cmake-3.12.3.tar.gz,将文件解压到当前文件夹
终端输入:./configure
make
make install
执行完毕后输入:cmake -version查看cmake版本
假如在执行./configure时遇到错误提示:
Cannot find appropriate C++ compiler on this system.
Please specify one using environment variable CXX.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------
Log of errors:
/home/ltu/Downloads/cmake-3.1.0/Bootstrap.cmk/cmake_bootstrap.log
这是提示系统缺少g++,如果你没有安装g++,终端输入:apt-get install g++
如果你已经安装了g++,仍然收到这个提示,请更换cmake压缩包版本
例如:本人更换到cmake-3.2.2,无错误提示
下载链接:http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
- cmake环境的配置
成功安装cmake之后,需要配置环境变量才能成功运行cmake
终端输入:vim /etc/profile
在文件末尾加上:
export PATH=$PATH:/home/uptech/cmake/cmake-3.2.2/bin
(请根据个人安装路径更改)
- 继续OpenCV的安装
进入OpenCV的安装目录/nfsroot/opencv/opencv-3.4.3-build
终端输入:cmake ..
执行完毕后终端输入:make -j4
(在多核宿主机上,可以通过-j选项来提高make命令的执行速度,单核机器就不要尝试了)
make执行过程中提示错误信息:
/usr/bin/ld: CMakeFiles/opencv_imgproc.dir/src/resize.cpp.o: relocation R_386_GOTOFF against undefined symbol `void (anonymous namespace)::hlineResize<int, (anonymous namespace)::fixedpoint64, 2, true>(int*, int, int*, (anonymous namespace)::fixedpoint64*, (anonymous namespace)::fixedpoint64*, int, int, int)' can not be used when making a shared object
/usr/bin/ld: final link failed: Bad value
这个错误提示是因为gcc的问题,可以尝试安装libstdc++
但是终端输入:ap-get install libstdc++时却出现
E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
这是软件更新源的问题
解决方法:
打开更新管理器
在设置中找到软件更新栏
选择重要安全更新和推荐更新
在其它软件选项卡中去掉有问题的源
之后点击安装更新或者终端输入:apt-get update进行手动更新