步骤一:github下载源代码包

在这里插入图片描述
并将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

步骤三:执行cmake

进入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过程并没有下载好这个某某。

步骤四: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 <opencv2/nofree/nofree.hpp>
#include<opencv2/xfeatures2d.hpp>


//#include <ceres/ceres.h>
#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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐