并将opencv和opencv-contrib放在同一个目录下
同时在此目录下新建build文件夹
mkdir build
#安装工具
sudo apt-get install cmake cmake-qt-gui git unzip
#安装依赖
sudo apt-get install build-essential
sudo apt-get install 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 libjasper-dev libdc1394-22-dev #处理图像所需的包
#以下是opencv官方linux安装教程中未制定的包,以防后期使用,这里都安装了(反正都不大)
sudo apt-get install 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 #流媒体转换/播放工具包
sudo apt-get install libgtk-3-dev #ubuntu16.04慎装,可能引起gtk2和gtk3的冲突
sudo apt-get install libopenblas-dev #高性能多核矩阵运算库BasicLinearAlgebraSubprograms
Bug:其中,在安装libjasper-dev时报错:无法定位软件包 libjasper-dev
解决方案:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
sudo apt-get install libjasper1 libjasper-dev
进入build文件夹下
cd build
执行以下命令,弹出Cmake图形化界面【没有Cmake的百度下载】
cmake-gui
确认源路径和构建路径无误,点击configure
一般来说,此时会报ippicv缺失的错误。【如果没有报错,跳过此步骤】
自行下载,注意版本号【蓝色框框里面是版本号】,之后,将下载的路径进行更改【红色框框里面所示】
在cmake界面中依次找到并设置以下两项,如图:
CMAKE_BUILD_TYPE: Release;
OPENCV_EXTRA_MODULES_PATH: opencv_contrib-3.4.8/modules;
(注意第二项MODULES_PATH必须指定到contrib下的modules)
继续configure,继续报错。
常见的就是【contrib模块中的xfeatures2d模块的boostdesc和vgg两个子模块所需的依赖下载失败】
进入build下CMakeDownloadLog.txt查看报错内容
根据报错内容找到以下文件
开始下载文件夹下的指定内容。
这些网站是根据文件夹内容进行拼凑搜索的,我们只需要更改后缀即可【必须下载指定版本的,否则hash值对不上】
https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i
将下载的文件放在随便一个文件夹下
例如这样
然后更改引用即可
同样的方法去解决其他的报错
提醒:在结束本步骤前,务必检查configure输出列表,确保没有红色报错,否则错误会体现在步骤四的make过程中。理论上,cmake过程应该下载好了所有依赖,make过程只需要读取本地文件即可。若make过程报错缺少某某或下载某某失败,原因多在于cmake过程并没有下载好这个某某。
make
【耐心等待,有点久。。。。。。。。】
注意make -加,有时make -j4会报错
报出这种错 c++: internal compiler error: Killed (program cc1plus)
make 成功!!!
sudo make install
打开文件
sudo gedit /etc/ld.so.conf.d/opencv.conf
在文档中添加
/usr/local/lib
配置库
sudo ldconfig
更改环境变量
sudo gedit /etc/bash.bashrc
在文件的最后添加
export PKG_CONFIG_PATH=/usr/local/opencv/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv/lib
test.cpp
#include <fstream>
#include <string>
#include<iostream>
#include "opencv2/opencv_modules.hpp"
#include <opencv2/core/utility.hpp>
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/stitching/detail/autocalib.hpp"
#include "opencv2/stitching/detail/blenders.hpp"
#include "opencv2/stitching/detail/timelapsers.hpp"
#include "opencv2/stitching/detail/camera.hpp"
#include "opencv2/stitching/detail/exposure_compensate.hpp"
#include "opencv2/stitching/detail/matchers.hpp"
#include "opencv2/stitching/detail/motion_estimators.hpp"
#include "opencv2/stitching/detail/seam_finders.hpp"
#include "opencv2/stitching/detail/warpers.hpp"
#include "opencv2/stitching/warpers.hpp"
// #include
#include<opencv2/xfeatures2d.hpp>
//#include
#include "ctime"
#include <iostream>
using namespace std;
using namespace cv;
using namespace cv::detail;
string ba_refine_mask = "xxxxx";
int main(int argc, char** argv) {
Mat img=imread("/home/user/Desktop/temp/task/lenna.jpg");
imshow("success",img);
return 0;
}
CMakeLists.txt
cmake_minimum_required( VERSION 2.8 )
project( taskk)
find_package( OpenCV REQUIRED )
add_executable( taskk test.cpp )
target_link_libraries(taskk ${OpenCV_LIBS} )
cmake .
make
./tassk
sudo apt-get install libcanberra-gtk-module
完结,撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。
参考博客,感恩
https://www.i4k.xyz/article/Kenny_GuanHua/107023525
https://www.cnblogs.com/phyger/p/14069437.html