下面介绍Ubuntu20.04下安装opencv,当然Ubuntu22.04也适用,然后将opencv链接到VsCode
先主体按照—>点我:链接1<—的第一点进行安装,但是特别注意:安装依赖库的时候会失败,需要增加源,再把下列命令替换
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
替换为下列命令
sudo apt install build-essential cmake unzip pkg-config
sudo apt install libjpeg-dev libpng-dev libtiff-dev
sudo apt install libavcodec-dev libavformat-dev libswscale-dev
sudo apt install libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libgtk-3-dev
sudo apt install libatlas-base-dev gfortran
如果你想让你的opencv配置有cuda加速、cudnn的功能,先确保你的电脑已经安装好了cuda和cudnn(👉按这连接步骤配置好),然后在按那文章执行cmake命令时,需要将cmake命令替换掉,opencv_contrib
可以到(👉 点我跳转)下载,至于DCUDA_ARCH_BIN
的取值需根据自己的显卡型号设置其值,不懂的可以来参考这文章(👉 点我跳转)
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
sudo cmake -DCMAKE_BUILD_TYPE=Release \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_EXTRA_MODULES_PATH=<你的opencv_contrib的路径>/modules \
-DWITH_CUDA=ON -DWITH_CUDNN=ON \
-DOPENCV_DNN_CUDA=ON \
-DBUILD_TESTS=False \
-DCUDA_ARCH_BIN=7.5 ..
这时候我们依赖库已经安装好了,可以选择不装python的支持,毕竟我们是C++的嘛~
安装好后,我们需要配置c_cpp_properties.json、launch.json、tasks.json(如果vscode没有这三个文件,先自行百度怎么弄出这三个文件来)
1. 第一个版本
此版本较繁琐,要在lauch.json写一大堆的include文件,也是网络上目前交流行的版本,虽然可正常使用opencv的库,但此方法不推荐使用。接下来我贴出这个版本的三个文件的配置来
c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/opencv4",
"/usr/include/opencv4/opencv2"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++14",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g","-std=c++11",
"${workspaceFolder}/Demo/*.cpp",
"${workspaceFolder}/src/*.cpp",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-I", "${workspaceFolder}/include",
"-I", "$/usr/include/opencv4",
"-I", "$/usr/include/opencv4/opencv2",
"-L", "$/usr/local/lib",
"-l", "opencv_core",
"-l", "opencv_imgproc",
"-l", "opencv_imgcodecs",
"-l", "opencv_video",
"-l", "opencv_ml",
"-l", "opencv_highgui",
"-l", "opencv_objdetect",
"-l", "opencv_flann",
"-l", "opencv_imgcodecs",
"-l", "opencv_photo",
"-l", "opencv_videoio",
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "test",
"isDefault": true
},
"detail": "调试器生成任务"
}
],
"version": "2.0.0"
第二个版本
强烈推荐使用此方法,这个方法除了配置opencv第三方库,还可以配置其他第三方库,根据需求可自行添加。这方法的原理是根据第三方库的 pkg-config 来配置的(即后缀为 .pc 的文件),然后系统会根据这个文件去自动寻找并链接include路径以及lib库。所以在根据我上面的教程来安装opencv时,一定不要忘记配置 pkg-config 环境了。下面将贴出三个配置代码
c_c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/x86_64-linux-gnu/sys",
"/usr/local/include/opencv4",
"/usr/include/x86_64-linux-gnu/sys"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
launch.json
{
"configurations": [
{
"name": "C/C++: cpp 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.out",
"args": [
"`pkg-config","--libs","--cflags","opencv4`",
],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb",
"miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /usr/bin/gdb -q --interpreter=mi"
}
],
"version": "2.0.0"
}
task.json
先用命令窗口尝试命令pkg-config --libs --cflags opencv4
,看看你能不能获得第三方库的信息如下图,如果可以的话就代表你这个第三方库是有 .pc 文件的
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out",
"`pkg-config","--libs","--cflags","opencv4`"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
至此我们已经配置好了,那么可以来测试下啦(如下图,自己加上test.jpg)
贴出测试代码
#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = Mat::zeros(Size(200,200), CV_8UC1);
imshow("Origin",srcImage);
waitKey(0);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)