不定时补充:
由于opencv3版本的一些模块移动到了opencv_contrib中,比如SIFT算法等,如果做特征检测等等就需要这些模块,所以还是安装完整一点。
1、下载opencv包
git下载源码包,地址:https://github.com/opencv,注意两个版本一致就好了。
进入opencv代码仓,clone下来
进入opencv_contrib代码仓,clone下来
2、更新源以及安装依赖
sudo apt-get update
安装依赖:
可以参照官网安装依赖(https://docs.opencv.org/3.4.10/d7/d9f/tutorial_linux_install.html)
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 libtiff-dev libjasper-dev libdc1394-22-dev
有时候会提醒安装的依赖名字不对,自己依据他的提示改一下就好了。
3、安装开始啦
我是自己将两个下载好的zip文件拷贝/opt/这个目录。所以命令记得全部加sudo。
先解压两个下载好的文件目录。
sudo unzip opencv-3.4.10.zip
sudo unzip opencv_contrib-3.4.10.zip
将解压后的opencv_contrib文件夹移动到opencv3.4.10文件夹里面:
sudo mv opencv_contrib-3.4.10 opencv-3.4.10
因为我是在/opt/opencv-3.4.10/目录下操作的,涉及到很多权限问题,所以干脆全部sudo chmod -R 777 *,省得麻烦。
进入到opencv目录,并新建一个build文件夹
cd opencv-3.4.10
sudo mkdir build
cd build
现在要准备cmake啦,这里有两种方法进行cmake,一种是用命令行,另一种是用gui方式。推荐用gui方式,操作简单。
直接在build目录下执行
cmake-gui
如果没有安装cmake-gui则根据系统提示安装一下即可。
-------cmake-gui 方式--------
打开gui进行配置
如图所示,第一步勾选最上面的两个路径,选择好代码所在文件夹的路径和要编译的路径,然后点configure, 选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish。
接着会弹出来上图中的红色部分配置列表,主要注意以下几个地方的选择即可:
CMAKE_BUILD_TYPE选项选择Release,CMAKE_INSTALL_PREFIX选项(也就是安装目录)默认即可;
这里OPENCV_EXTRA_MODULES_PATH要点右边的路径选择,记住是勾选到modules路径下,勾选OPENCV_ENABLE_NONFREE选项,只有勾选了这个选项,才能安装sift算法模块等。
然后再点击一下configure,无误之后再点击generate即可完成配置。
配置好了之后,
sudo make -j4 (想用几个线程随你喜好)
将编译过的安装到电脑上,
sudo make install
接下来就开始配置opencv
配置环境变量:
打开文件:
sudo gedit /etc/ld.so.conf.d/opencv.conf
一般第一次安装opencv没有配置这个文件都是空白的,填入一下内容:
/usr/local/lib
具体地址根据你安装在电脑上的opencv地址去找,比如我的在/usr/local/lib/x86_64-linux-gnu目录下,我就改成了我自己的地址
配置库
sudo ldconfig
更改环境变量
sudo gedit /etc/bash.bashrc
输入以下内容:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
同样,这里也是根据你自己电脑安装上的地址去填写,比如我的电脑安装上了最后的库在这里:
那么我这里的路径就换成
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/x86_64-linux-gnu/pkgconfig
export PKG_CONFIG_PATH
最后,再刷新一下环境变量就可以了。
source /etc/bash.bashrc
OK,大功告成。
测试下:
随便mk一个dir,cd 进去,新建一个test.cpp,输入:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("1.jpg");
imshow("srcIMage",srcImage);
waitKey(0);
return 0;
}
再添加一个CMakeLists.txt ,添加以下内容
cmake_minimum_required(VERSION 2.8)
project(test)
set(CMAKE_CXX_STANDARD 11)
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( test test.cpp )
target_link_libraries( test ${OpenCV_LIBS} )
再拖一张图片进来该目录,并命名为1.jpg。
cmake .
make
./test