(如果是要跑ORB-SLAM2,建议用OpenCV 3.4.1 版本,不然之后会很麻烦,会出现不兼容问题)
在OPenCV官网下载OpenCV 3.4.1 的source包然后解压到本地(下载链接http://opencv.org/releases.html,选择sources版本)
解压下载下来的zip包:(把压缩包放在你想要的位置,然后cd到该位置,解压即可)
unzip opencv-3.4.1.zip
进入到解压后的文件包中:
cd opencv-3.4.1
安装依赖库和cmake ,如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令
sudo apt-get install cmake (这一步我们已经在步骤一(3)中安装过,就不用操作了)
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev
(处理图像所需的包)
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
(处理视频所需的包)
sudo apt-get install libatlas-base-dev gfortran
(优化opencv功能)
sudo apt-get install ffmpeg
cd opencv-3.4.1
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
(在中间会下载个东西,稍等一下就ok,没什么问题)
(如果已经在新的文件夹中编译,但是还会出现之前的报错,把cmakecache.txt删了再编译就可)
sudo make
(漫长的编译过程)
sudo make install
sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:
/usr/local/lib
如下图所示,点击保存即可:
执行如下命令使得刚才的配置路径生效:
sudo ldconfig
配置bash:
sudo gedit /etc/bash.bashrc
在最末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
如下图所示,点击保存即可:
保存,执行如下命令使得配置生效:
source /etc/bash.bashrc
更新:
sudo updatedb
至此所有的配置都已经完成,下面用一个小程序测试一下
找到,cd到opencv-3.4.1/samples/cpp/example_cmake目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行
cd opencv-3.4.1/samples/cpp/example_cmake
cmake .
make
./opencv_example
即可看到打开了摄像头,在左上角有一个hello opencv
即表示配置成功,如下图所示:
我之前安装的是pencv3.4与openvins不兼容,需要重新换成3.2
在OPenCV官网下载OpenCV 3.2.0 的source包然后解压到本地(下载链接http://opencv.org/releases.html,选择sources版本)
解压下载下来的zip包:(把压缩包放在你想要的位置,然后cd到该位置,解压即可)
unzip opencv-3.2.0.zip
进入到解压后的文件包中:
cd opencv-3.2.0
安装依赖库和cmake ,如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令
sudo apt-get install cmake
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev
(处理图像所需的包)
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
(处理视频所需的包)
sudo apt-get install libatlas-base-dev gfortran
(优化opencv功能)
sudo apt-get install ffmpeg
cd opencv-3.2.0
mkdir build
cd build
再记录一下自己现在是装了opencv3.4.1和opencv3.2.0,为了适应大佬们的算法,需要有不同的版本,在安装和使用时需要注意的是:
在安装cmake
步骤时,需要额外设置安装后的路径,因为第一个版本默认安装在usr/local
下的,第二个版本就不能重复了呀!手动新建文件夹,opencv320 ,在cmake时执行
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D ENABLE_PRECOMPILED_HEADERS=OFF ..
(在中间会下载个东西,稍等一下就ok,没什么问题)
如果出现下载不成功的问题
错误如下:
-- ICV: Downloading ippicv_linux_20151201.tgz...
CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file):
file DOWNLOAD HASH mismatch
for file: [/home/aiko/opencv/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz]
expected hash: [808b791a6eac9ed78d32a7666804320e]
actual hash: [d41d8cd98f00b204e9800998ecf8427e]
status: [35;"SSL connect error"]
Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:110 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:243 (include)
cmake/OpenCVFindLibsPerf.cmake:37 (include)
CMakeLists.txt:558 (include)
-- Configuring incomplete, errors occurred!
See also "/home/aiko/opencv/opencv-3.2.0/build/CMakeFiles/CMakeOutput.log".
See also "/home/aiko/opencv/opencv-3.2.0/build/CMakeFiles/CMakeError.log".
解决办法:
(由于网络原因,可能出现ippicv_linux_20151201.tgz(无法在终端下载的情况,则可以先单独下载ippicv_linux_20151201.tgz之后,把其移动到终端所提示的路径(终端会提示该路径找不到文件),如路径/home/aiko/opencv/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz
覆盖掉没有下载成功的文件即可。
sudo make
(漫长的编译过程)
sudo make install
报错如下:
In file included from /home/aiko/opencv/opencv-3.2.0/modules/core/src/hal_internal.cpp:49:0:
/home/aiko/opencv/opencv-3.2.0/build/opencv_lapack.h:2:10: fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h: 没有那个文件或目录
#include "LAPACKE_H_PATH-NOTFOUND/lapacke.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
modules/core/CMakeFiles/opencv_core.dir/build.make:522: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o' failed
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/hal_internal.cpp.o] Error 1
make[2]: *** 正在等待未完成的任务....
In member function ‘void cv::EigenvalueDecomposition::compute(cv::InputArray)’:
cc1plus: warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]
CMakeFiles/Makefile2:1165: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2
解决方法:
将错误所在的文件打开,在我的目录中是:
/home/aiko/opencv/opencv-3.2.0/build/opencv_lapack.h
把第二行修改为 #include "lapacke.h"
保存即可,
之后继续执行:
sudo make
(如果已经在新的文件夹中编译,但是还会出现之前的报错,把cmakecache.txt删了再编译就可)
sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:
/usr/local/opencv320/lib
点击保存即可
执行如下命令使得刚才的配置路径生效:
sudo ldconfig
配置bash:
sudo gedit /etc/bash.bashrc
在最末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH://usr/local/opencv320/lib/pkgconfig
export PKG_CONFIG_PATH
点击保存即可
保存,执行如下命令使得配置生效:
source /etc/bash.bashrc
更新:
sudo updatedb
上一步是在更改默认使用哪一个opencv库,如果想换回opencv3.4 ,重复步骤(4)更改默认opencv 配置环境,添加路径即可