【C++版Opencv】【Ubuntu】VScode配置Opencv

1 安装基本工具
sudo apt install -y g++
sudo apt install -y cmake
sudo apt install -y make
sudo apt install -y wget unzip

2 安装opencv依赖的库
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
streamer支持:
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
可选的依赖:
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev

3 下载OpenCV源代码
安装最新版本:
wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip
cd 到下载的opencv目录上级目录:
unzip opencv.zip
mv opencv-master opencv

4 配置和编译OpenCV
(1)进入到opencv目录
cd opencv
mkdir build
cd build

(2)使用cmake配置opencv
sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D WITH_FFMPEG=ON ..
(3)使用make编译
sudo make -j8

报错

[ 57%] Built target opencv_dnn make: *** [Makefile:163:all] 错误 2
分析

安装了 Anaconda 后,python 和 gcc 都用的是 anaconda 的版本,anaconda 的 gcc 版本,比 system defalut 的版本低。
解决方法

在 shell 中先注释 Anaconda 的环境变量
export PATH=~/anaconda3/bin:$PATH

删除opencv下的build文件夹,从“4 配置和编译OpenCV”的第一步开始操作,第三步make成功后,往下走。
(4)使用make安装
sudo make install

5 配置pkg-config
(1)确认opencv4.pc文件的路径:
sudo find / -iname opencv4.pc
路径为:/usr/local/lib/pkgconfig/opencv4.pc
(2)将/usr/local/lib/pkgconfig路径加入PKG_CONFIG_PATH:
sudo gedit /etc/profile.d/pkgconfig.sh
在打开的文件中加入下面一行代码,然后保存并退出。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source生效
source /etc/profile
(3)验证是否成功
pkg-config –libs opencv4

6 配置动态库环境
sudo vim /etc/ld.so.conf.d/opencv4.conf
/usr/local/lib # 文件末尾加上OpenCV的lib路径 
sudo ldconfig # 配置生效

7 测试
cd 到/opencv/samples/cpp/example_cmake目录,执行如下命令:
cmake .
make
./opencv_example

8 vscode配置
(1)下载中文插件
在应用商店搜索“ch”,安装中文插件。
(2)安装c++
(3)新建文件夹“test”。打开文件夹后,新建test.cpp。
选取一张测试图片,放在test.cpp同级目录。

测试代码:test.cpp

#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int main(int argc, char* argv[]) {
    const char* imagename = "test.jpg";
    //读图像
    Mat img = imread(imagename, 1);
    //读入图像失败
    if (img.empty()) {
        fprintf(stderr, "Can not load image %s\n", imagename);
        return -1;
    }
    //显示图像
    imshow("image", img);
    //按键盘任意键就返回
    waitKey();
    return 0;
}

(4)vscode调试主要就是修改如下文件:
task.json、launch.json和c_cpp_properties.json
task.json:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",  /* 与launch.json文件里的preLaunchTask的内容保持一致 */
            "command": "/usr/bin/g++",
            "args": [
                "-std=c++11",
                "-g",
                //"${file}",   /* 编译单个文件 */
                "${fileDirname}/*.cpp",  /* 编译多个文件 */
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",  /* 输出文件路径 */
 
                /* 项目所需的头文件路径 */
                "-I","${workspaceFolder}/",
                "-I","/usr/local/include/",
                "-I","/usr/local/include/opencv4/",
                "-I","/usr/local/include/opencv4/opencv2",
 
                /* 项目所需的库文件路径 */
                "-L", "/usr/local/lib",
 
                /* OpenCV的lib库 */
                "/usr/local/lib/libopencv_*",
 
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

launch.json:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",  //程序文件路径
            "args": [],  //程序运行需传入的参数
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,   //运行时是否显示控制台窗口
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
            
                "/usr/local/include/opencv4"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

以上3个文件的内容不用修改,直接复制内容即可。
(5)测试结果
运行程序,显示出图片即成功。

参考:

Ubuntu20下 vscode配置OpenCV 4.5.5_纬领网络的博客-CSDN博客_ubuntu vscode配置opencv

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月19日
下一篇 2022年5月19日

相关推荐