vscode 配置OpenCV编译环境 (ubuntu)

   需要明白内在的编译逻辑,而不是表层现象。诸如此类问题今后有很多,不可能每次都翻箱倒柜,需要做的是从容面对,仔细分析,找出问题的根源所在。
    话不多说,直接给出配置的具体方法,这是一个通用版本,只要你是使用的ubutu系统,且安装的是C++版本的opencv基本上都可以通过该方法来实现。
    1 step:首先新建文件夹,并在该文件下创建cpp文件,然后使用vscode打开该文件夹。
    2 step:利用ctrl+shift+p打开command line,寻找launch.json,找到后如下配置该文件。

ubuntu16.04安装opencv3.4

1.去官网下载opencv,在本教程中选用的时opencv3.4.0,其他版本的配置方法异曲同工。 
下载链接http://opencv.org/releases.html,选择sources版本

2.解压下载下来的zip包。你如果有图形界面,直接右击文件,就会有解压选项。

3.进入到解压后的文件包中

4.安装依赖库和cmake ,如果提醒需要apt-get update,那就先sudo su进入root权限(创建超级用户不会请自行百度),再sudo apt-get update,然后在执行下面命令

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

5.安装完cmake之后执行命令 ,创建编译文件夹,不创建的会提示(如下图) 
In-source builds are not allowed.

mkdir my_build_dir 
cd my_build_dir

6.cmake一下(其实后面-D等等都是可选项,具体想了解是干嘛的,请参考博客:https://blog.csdn.net/u013066730/article/details/79411730

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

注意:如果已经在新的文件夹中编译,但是还会出现之前的报错,把cmakecache.txt删了再编译就可

7.执行命令,漫长的编译过程

sudo make

8.执行命令

sudo make install

9.sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到

sudo gedit /etc/ld.so.conf.d/opencv.conf

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加

/usr/local/lib 

10.执行如下命令使得刚才的配置路径生效

sudo ldconfig 

11.配置bash

sudo gedit /etc/bash.bashrc

在最末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH 

保存,执行如下命令使得配置生效

source /etc/bash.bashrc 

更新

sudo updatedb 

12.至此所有的配置都已经完成 
下面用一个小程序测试一下

找到 
cd到opencv-3.4.0/smaples/cpp/example_cmake目录下 
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下 
按顺序执行

cmake . 
make 
./opencv_example

即可看到打开了摄像头,在左上角有一个hello opencv 
即表示配置成功

OpenCV 编译环境配置

配置opencv,其实主要就解决两个问题,一个是头文件包含,一个是库文件搜索。头文件包含在c_cpp_properties.json中解决,库文件包含则要继续修改task.json中的编译命令。
首先来看c_cpp_properties.json

c_cpp_properties.json

怎么打开这个文件呢,两种方式,一个就是打开命令面板(还记得那个快捷键吗?我一直记,一直忘),然后搜索cpp: Edit,点击结果就可以进入这一文件。
另一种就是在自己的cpp文件里直接包含opencv库,聪明的cpp扩展会给你一个小提示提醒你打开c_cpp_properties.json设置头文件包含。
不说废话:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include", //请确保你的opencv opencv2头文件夹安装在这个目录
                "/usr/include"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

task.json

上一步解决头文件包含,这里就要解决库文件搜索,也简单,直接修改编译命令,也就是task.json中的args参数:

"args": [
        "-g", "-std=c++11", "${file}", "-o", "${fileBasenameNoExtension}.o",// 设置动态链接库
        "-I", "/usr/local/include",
        "-I", "/usr/local/include/opencv",
        "-I", "/usr/local/include/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"
    ],// 编译命令参数

其中-I表示头文件目录,-L表示库文件目录,-l表示库文件。


reference link:

https://blog.csdn.net/u013066730/article/details/79411767

https://www.jianshu.com/p/6d3f4a30945d
https://blog.csdn.net/m0_37975258/article/details/101467438

猜你喜欢

转载自blog.csdn.net/Fan0920/article/details/108284778