本文是在WSL2的环境(Ubuntu 22.04)下配置opencv4.8.0+opencv-contrib,并在vscode下运行
安装环境
图片显示的是一个名为 neofetch 的命令的输出结果。neofetch 是一个命令行系统信息工具,它可以显示一个美观的 ASCII 艺术风格的系统信息摘要,包括操作系统、内核、主题、图标、终端、CPU、GPU 和内存等信息。同时也要安装lolcat . lolcat 是一个命令行工具,它可以将文本转换成彩虹色。

参考文档
个人opencv配置了4,5天,所以比较混论,希望能帮助读者,不至于添麻烦就是万幸。
安装步骤
下载依赖库
这个库不一定全,可能需要下载其他库,具体请参考“参考文档1,2 ,3”。(我个人因为学术不精,所以找了很多文档,把他们说要下的都下载了,对不起)
sudo apt-get install cmake cmake-gui
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libgtk2.0-dev libvtk7-dev
sudo apt-get install pkg-config
下载源码
因为我们是在Linux下安装opencv,且要安装第三方库opencv-contrib,所以只能选择源码编译

opencv-4.8.0.zip: https://codeload.github.com/opencv/opencv/zip/refs/tags/4.8.0
opencv-contrib-4.8.0.zip: https://codeload.github.com/opencv/opencv_contrib/zip/refs/tags/4.8.0
解压,准备编译(最难的一步)
将下载下来的源码解压,并将contrib源码文件夹移动到opencv文件夹中。

进入源码目录,新建build文件夹,并进入
build文件夹用来存放编译生成的文件

mkdir -p build
cd build
--------------------仅安装opencv ,执行下边命令----------------------------
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
---------------------安装opencv基础版以及opencv-contrib,执行下边命令---------------------------
sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=/mnt/d/opencv-4.8.0/opencv_contrib-4.8.0/modules -D BUILD_JAVA=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_ENABLE_NONFREE=True ..
PS: 第二个选项OPENCV_EXTRA_MODULES_PATH是指扩展包的路径,所以/mnt/d/opencv-4.8.0/opencv_contrib-4.8.0/modules 为你的opencv-contrib 的modules文件夹路径。
PPS: 这里我关闭了python的语言接口,虽然opencv3是ON,但是测试发现不支持python语言,有需要的可以把python2也设置为ON
sudo make -j8 # 编译一阵子
sudo make install
cmake 成功的情况

make 成功

install成功

环境配置
打开文件 :
sudo nano /etc/ld.so.conf
文件中添加:
include /usr/local/lib
退出保存
# 这么做目的是避免出现 error while loading shared libraries错误
cd /etc/ld.so.conf.d/
ls # 查看应该是没有opencv.conf的,则新建
sudo touch opencv.conf
sudo nano opencv.conf
文件内容:
/usr/local/lib
退出保存
sudo ldconfig
修改 :
sudo nano /etc/bash.bashrc
文件末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
退出保存
source /etc/bash.bashrc
如果是zsh:
//打开~./zsh
sudo nano ~/.zshrc
//设置环境变量
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
//保存(ctrl + X)
//重新加载 .zshrc 文件以应用更改:
source ~/.zshrc

查看opencv安装成功情况
pkg-config opencv --modversion
如果有如下情况,则自己创建一个文件

cd /usr/local/lib/pkgconfig
touch opencv.pc
sudo gedit opencv.pc
文件内容添加 :
prefix=/usr/local
exec_prefix=${prefix}
includedir=/usr/local/include
libdir=/usr/local/lib
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.8.0
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}
退出保存
最后验证
以我的文件目录为例,进入源代码文件夹/opencv-4.8.0/samples/cpp/example_cmake文件夹下
打开终端输入:
mkdir build
cd build
cmake ..
输出如下结果:
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/d/opencv-4.8.0/samples/cpp/example_camke/build
然后执行
make
运行示例程序:
在build文件夹下继续输入
./opencv_example


6.VSCode 配置
c_cpp_properties.json 编写代码时,接口提示链接。
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/c++/**",
"/usr/include/eigen3/**",
"/usr/local/include/opencv4/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
task.json 执行F5 时,运行程序所需编译参数,配置如下:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/bin/${fileBasenameNoExtension}",
"-I", "/usr/include/eigen3",
"-I", "/usr/local/include/opencv4",
"-L", "/usr/local/lib/",
"/usr/local/lib/libopencv_*"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
launch.json配置
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe build active file" // 调试前的预执行任务,这里的值是tasks.json文件中对应的编译任务,也就是调试前需要先编译
}
]
}
踩过的坑
在Ubuntu22.04的环境下编译opencv4.5.1
由于opencv4.5.1早于22.04,所以cmake时会不断报错。要注意
写在最后的话
opencv配置了5天,踩过不少坑,每一次配置环境总是最折磨的,但是一定要坚持下去,一遍一遍尝试,总能尝试出问题,比如猜想“opencv4.5.1早于22.04”,在第2天就想出来了,但是一直没有实践,直到今天才决定放弃4.5.1,去尝试4.8.0. 我这篇文章不是很详细,还是希望多看看csdn的文章。下面列一下我看过的,觉得有用的。每个都是取一部分,希望我的文章可以有一点用
https://blog.csdn.net/raw_inputhello/article/details/131513355
https://blog.csdn.net/weixin_41809117/article/details/137076621
https://blog.csdn.net/ahy86045/article/details/129792367
Comments NOTHING