MacOS系统下VS code中 opencv C++版本配置

由于本人也不是专业c++用户,因此在首次vscode opencv c++版本配置过程中遇到了很多问题,为了做一个记录,也想将经验分享给其他人,因此写了一个文本,希望能帮助其他朋友。

1.安装opencv

最先尝试的是使用homebrew方式安装,这也是网上用的最多的方法,比较傻瓜式。我最开始也是用的这种方法,安装过程中并没有出现什么问题。但是在脚本中导入模块头文件的时候一直显示找不到头文件,因此无奈之下尝试了第二种方法。但是这里也将第一中方法贴出来。

1.1. brew安装

#准备工作,如果已经安装则跳过。
brew install pkg-config
brew install wget
brew install cmake
#终端中输入一下代码,可以一行一行输入。
#或者opencv来安装最新版本。
brew install opencv@3
#然后配置一些环境变量
export PATH="/usr/local/opt/opencv@3/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/opencv@3/lib"
export CPPFLAGS="-I/usr/local/opt/opencv@3/include"
export PKG_CONFIG_PATH="/usr/local/opt/opencv@3/lib/pkgconfig"


1.2. 编译安装

#从github clone,建议clone在home/local目录下。
git clone -b 3.4 https://github.com/opencv/opencv.git
cd opencv
#在opencv创建build文件夹,会用来放编译后的结果。
mkdir build
cd build
#注意下一步最后有两个点。
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
#make一下,时间很长,等一下。
make -j8
make install
#完成后使用该指令可查看是否成功安装opencv。如果成功,则会出现很多package信息。例如:
#-I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_dnn -#lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -#lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_videoio -#lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -#lopencv_imgproc -lopencv_flann -lopencv_core
pkg-config --cflags --libs opencv

1.2.1. 如果没有问题,最后还需要配置环境变量。

#使用vim文本编辑器进入.bash_profile

vim ~/.bash_profile

#打开文件后,按 i 编辑模式,然后将下面几行粘贴进去。可以粘贴在最下边。

export LIBRARY_PATH=/usr/local/lib/:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH

粘贴完成后按ESC,退出编辑模式,然后按冒号:再按wq!保存退出。

1.2.2. 进行一个简单测试

首先创建一个.cpp文件,比如main.cpp里边用到了opencv的库,比如#include <opencv2/higngui.hpp>

然后执行编译,如果正常生成.o 文件则没有大问题。至于说没有大问题,是因为将opencv导入到vs code中也是很容易出错。

g++ $(pkg-config --cflags --libs opencv) main.cpp -o main

2. 在vscode中使用opencv。

首先要建立工程,并且打开四个.json工程文件(其实只有两个需要改。),如何打开可以根据如下的视频。看前几分钟即可,因为真实配置会有不同。首先提一下,选择编译器时,我选的是 g++,后面不带版本号,例如g++-11。可能其他的也行,没有试,后面可能会试一下。

vscode配置opencv环境,以及一些简单函数_哔哩哔哩_bilibili

首先更改c_cpp_properties.json文件。只需要改“includePath”这里,default后面全是新加的。

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${default}",
                
                "/usr/local/include/**",
                "/usr/local/include/**",
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/**",
                "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.1.6/include/**",
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/**",
                "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/**",
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/**"
            ],
            "defines": [],
            "macFrameworkPath": [],
            "compilerPath": "/usr/local/bin/gcc-11",
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "macos-gcc-x64"
        }
    ],
    "version": 4
}

具体怎么找到新加的这些信息?命令行中输入:

gcc -v -E -x c++ -

终端打印信息的最后会出现如下信息,然后将这些信息进行复制,然后加上冒号和/**, 像我的例子中那样,然后进行粘贴即可。

#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.1.6/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)

其次更改了task.json文件。由于只更改了args:[]这里,所以只将这里复制过来。具体添加为后面标着‘#新’的几行。

"args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "`pkg-config",#新
                "--libs", #新
                "--cflags",#新
                "opencv`"#新
            ],

3. 最终测试

新建一个脚本,然后点击CTRL+F5运行。成功运行会在新窗口展示图片。因为添加了code-runner,也用右上角的三角运行键试了,但是报错,感觉是找不到opencv2库文件。不知道为什么,如果有大佬后面可以回复一下。

#include <iostream>
#include "opencv2/opencv.hpp"


using namespace std;
using namespace cv;

int main(){

    cout<<"jianchao"<<endl;
    Mat image = imread("/Users/cijianchao/Downloads/opencv-logo.png");
    imshow("opencv", image);
    waitKey(0);
    return 0;
}

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值