大家好,欢迎来到IT知识分享网。
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
IT知识分享网
完成安装。
下载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
运行以下命令即可:
IT知识分享网$ sudo apt install cmake-qt-gui
$ sudo apt install mingw-w64
接下来就是如何编译opencv。为了让读者少踩坑,这里将一些编译前的准备工作介绍一下:
编译opencv前的准备工作
- 手动下载
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
,含义是替换网络下载为本地下载。
- 安装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/sources
,Browse Build
为/path/to/opencv3.4.9/build/x64/LinuxBuild
,该文件夹需要自己创建。随后点击Configure
按钮。CmakeSetup窗口默认就行(Windows下面需要指定mingw g++编译器,ubuntu默认即可,当然也可以切换成mingw g++编译器),如下所示
随后
1. 在搜索栏搜索EXTRA
,将OPENCV_EXTRA_MODULE_PATH
的值改成/path/to/opencv_contrib-3.4.9/modules
。
2. 搜索world
,修改BUILD_opencv_world
的值为选中,如果默认选中就不管。
然后再点击Configure
–> Generate
。
打开terminal,执行
IT知识分享网$ 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 <vector>
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <io.h>
#include <algorithm>
#include <opencv2/core/utility.hpp>
#include <opencv2/video/tracking.hpp>
#include <opencv2/tracking/tracker.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
int main()
{
cv::Mat image = cv::imread("/path/to/test.jpg");
cv::imshow("test", image);
cv::waitKey(0);
system("pause");
return 0;
}
说一下在我的环境里面遇到的一些问题:
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路径下
- 编译参数
初始编译选择g++-9
,参数选择 “-g -c -o”,输出文件格式选择”.o” 如下:
# tasks.json
"args": [
"-g",
"${file}",
"-c",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.o",
],
- 链接参数
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
- 执行的问题
执行的时候抛出
./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程序了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11905.html