Ubuntu安装opencv_contrib

Ubuntu+vscode+Opencv+Opencv_contrib C++ support环境搭建流程

之前我们介绍了Windows搭建vscode opencv contrib的流程。由于后期需要用到linux开发,所以需要在linux上搭建相应的环境。本文完整介绍了如何在ubuntu环境下进行opencv环境搭建的流程。

系统要求:ubuntu20.04:
软件要求:vscode latest, opencv 3.4.9, opencv_contrib 3.4.9, mingw-w64, cmake-gui工具。

下载并安装vscode

登陆https://code.visualstudio.com/下载.deb vscode。一般会下载到~/下载目录
随后键入以下命令

$ sudo pdg -i vscode

完成安装。

下载opencv opencv contrib
据说ubuntu好用的下载器是uget + aria2组合可以加速,但在我的电脑上不work,下载opencv的速度很慢,这个下载过程请读者自行解决。
opencv下载地址:https://github.com/opencv/opencv/archive/3.4.9.zip
opencv_contrib下载地址: https://github.com/opencv/opencv_contrib/releases/tag/3.4.9

下载cmake-gui工具和mingw-w64
运行以下命令即可:

$ sudo apt install cmake-qt-gui
$ sudo apt install mingw-w64

接下来就是如何编译opencv。为了让读者少踩坑,这里将一些编译前的准备工作介绍一下:

编译opencv前的准备工作

  1. 手动下载ippicv_2019_lnx_intel64_general_20180723.tgz

下载地址:https://raw.githubusercontent.com/opencv/opencv_3rdparty/ippicv/master_20180723/ippicv/ippicv_2019_lnx_intel64_general_20180723.tgz。如果下载速度过慢,可以使用github代下载服务:http://g.widora.cn/,永久免费,值得拥有。下载好后,解压文件并修改source文件夹里面的99bcc121813401857e2a8027ae9b3c81_1593744729.tgz文件名称修改为ippicv_2019_lnx_intel64_general_20180723.tgz

下载好后,将/path/to/opencv3.4.9/sources/3rdparty/ippicv/ippcv.cmake中的第47行改为file:/path/to/ippicv_2019_lnx_intel64_general_20180723.tgz,含义是替换网络下载为本地下载。

  1. 安装opencv依赖
$ sudo apt install cmake  
$ sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev  
$ sudo apt install git

编译安装opencv

打开cmake-gui,Browse Source/path/to/opencv3.4.9/sourcesBrowse Build/path/to/opencv3.4.9/build/x64/LinuxBuild,该文件夹需要自己创建。随后点击Configure按钮。CmakeSetup窗口默认就行(Windows下面需要指定mingw g++编译器,ubuntu默认即可,当然也可以切换成mingw g++编译器),如下所示

Ubuntu安装opencv_contrib_第1张图片

随后
1. 在搜索栏搜索EXTRA,将OPENCV_EXTRA_MODULE_PATH的值改成/path/to/opencv_contrib-3.4.9/modules
2. 搜索world,修改BUILD_opencv_world的值为选中,如果默认选中就不管。

然后再点击Configure --> Generate

打开terminal,执行

$ cd /path/to/opencv3.4.9/build/x64/LinuxBuild/
$ sudo make -j8 # 编译,等待时间有点漫长,中间有些警告不管
$ sudo make install # 进行安装

随后可以在/usr/local/lib文件夹看到有libopencv的库了。

在vscode中使用opencv

这个过程和在windows下使用opencv类似,可参考我的另外一篇文章vscode-c++-opencv-opencv_contrib安装教程.pdf。不过似乎不用设置c_cpp_properties.json也不会报错。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main()
{
    cv::Mat image = cv::imread("/path/to/test.jpg");
    cv::imshow("test", image);
    cv::waitKey(0);
    system("pause");
    return 0;
}

说一下在我的环境里面遇到的一些问题:

  1. io.h等一些头文件可能找不到的问题;

解决方案:linux默认会在/usr/include下找头文件,如果找不到,就需要在/usr/include的子文件夹下搜该头文件,如下:

$ cd /usr/include
$ find ./ -name "io.h"
# /usr/include/x86_64-linux-gnu/sys/io.h
$ cp /usr/include/x86_64-linux-gnu/sys/io.h /usr/include # 拷贝到include路径下
  1. 编译参数

初始编译选择g++-9,参数选择 “-g -c -o”,输出文件格式选择".o" 如下:

# tasks.json
"args": [
	"-g",
	"${file}",
	"-c",
	"-o",
	"${fileDirname}/${fileBasenameNoExtension}.o",
],
  1. 链接参数
g++ \
-std=c++11 \
-g \
-o ./test_opencv \
./test_opencv.o \
-I /usr/local/include \
-I /usr/local/include/opencv \
-I /usr/local/include/opencv2 \
-I /home/wyx/software/opencv_contrib-3.4.9/modules/tracking/include \
-l opencv_world
  1. 执行的问题

执行的时候抛出
./test_opencv: error while loading shared libraries: libopencv_world.so.3.4: cannot open shared object file: No such file or directory错误。

这个错误是说你的opencv_world库找不到,需要在linux的共享库配置文件里面修改,具体如下:

$ cd /etc/ld.so.conf.d
$ sudo vim opencv.conf
# 在其中加入/usr/local/lib/,opencv安装好后会把libopencv_world.so文件放到这个路径下
$ sudo ldconfig # 使配置生效

应该就可以运行opencv程序了。

你可能感兴趣的:(杂项,opencv,ubuntu,linux)