MacBook M2 使用Xcode配置OpenCV-C++环境

本文详细介绍了如何在MacBook上使用源码安装OpenCV,包括获取源码、配置cmake、编译和安装,以及在Xcode中创建并配置OpenCV工程的过程,以消除警告并确保环境搭建成功。

在MacBook上安装C++实现的OpenCV可以选择Homebrew和源码安装两种方式,这里我选择了源码安装,选择源码方式安装,你必须使用其它方式安装cmake,因为我还使用anaconda建立独立环境配置了Python-OpenCV环境,故我使用了conda install cmake安装了cmake。你还可以选择安装Homebrew来使用brew install cmake安装cmake。
下面我们一起来开始配置OpenCV-C++环境:

一、安装OpenCV

1.获取OpenCV源码

在你的工作目录下(自己选择,是在“下载”文件夹下进行克隆的)使用git clone获取源码:
如果显示克隆失败,这很正常,重复操作,或者换网后再重复操作,手机热点也是不错的选择。
你也可以直接从我的百度网盘分享链接中下载:
链接: https://pan.baidu.com/s/1Z9_Ap7Jm-rpBxVKV_1dEOw?pwd=emv4 提取码: emv4

git clone https://github.com/opencv/opencv.git

在这里插入图片描述
上面第一次克隆到中途失败了,不要紧,再来一次:

在这里插入图片描述
当你成功克隆完项目源码后,完全可以按照OpenCV官网给的操作(https://docs.opencv.org/4.x/d0/db2/tutorial_macos_install.html)进行安装,实际上我就是按照官网的操作进行安装的,而且我下面写的安装步骤也是我按照官网的操作进行安装的流程。

2.新建编译文件夹

代码克隆后,会在你选的路径下出现一个opencv文件夹,源码就在这个不文件夹里,在与opencv文件夹平级的文件夹进行编译,什么意思?比如我克隆的代码路径是./Downloads/opencv,那么我就在Downloads文件夹下创建编译文件夹,这样做是为了保持源码清洁,这很重要!
先使用cd命令进入Downloads文件夹,再使用mkdir创建编译文件夹并使用cd进入此文件夹,可看如下截图:

mkdir build
cd build

在这里插入图片描述
这时候进入Downloads文件夹,会看到如下两个文件夹:

在这里插入图片描述

3.使用cmake从源码构建opencv

构建类型-DCMAKE_BUILD_TYPE也可以设置成Release模型,是否构建例程-DBUILD_EXAMPLES可以设置为ON,如果想设置更多参数,可参考上面的官网链接。

cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXAMPLES=OFF ../opencv

cmake成功如下截图所示:
在这里插入图片描述
特别提醒: 截图中的“Install to:”指示的是安装路径。

4.使用make生成opencv

make -j7

这里的-j7指的是7个线程运行。
make成功如下截图所示:
在这里插入图片描述

5.安装opencv

sudo make install

输入开机密码后开始安装,没有报错则opencv成功安装到/usr/local/文件夹中

在这里插入图片描述
在/usr/local/文件夹中看到如下四个文件夹则表明安装成功,前三个文件夹里都是opencv相关文件,第四个share文件夹是系统原有文件夹。

在这里插入图片描述

二、在Xcode中构建OpenCV工程

1.创建一个工程:

在这里插入图片描述

2.点击Next,然后给工程命名,语言选择C++,组织者身份也是自定义:

在这里插入图片描述

3.再次点击Next,选择工程存储位置,我选择存储在CPP这个文件夹下:

在这里插入图片描述

4.点击Create:

在这里插入图片描述

5.项目创建完成,接下来就是核心工作:配置OpenCV环境了

根据下面截图中的提示,在“Header Search Paths”的“Debug”模式中输入“/usr/local/include/”和“/usr/local/include/opencv4/”。
在这里插入图片描述
同样,在“Header Search Paths”下方的“Library Search Paths”的“Debug”模式中输入“/usr/local/lib/”截图如下:
在这里插入图片描述接着,在“Linking - General”下方的“Runpath Search Paths”中输入“/usr/local/lib/”,截图如下:

在这里插入图片描述

还没完,还有一步:右键单击的工程名,选择“Add Files to "Opencv_test"...

在这里插入图片描述
单击后,出现下面的窗口:
在这里插入图片描述
然后,按键盘上的“/”键,输入“/usr/local/lib/”:
在这里插入图片描述
然后回车,到如下页面:
选中lib文件夹,然后点击Add

在这里插入图片描述
然后工程目录下会出现一个lib文件夹,此文件夹中会包含链接的库:
在这里插入图片描述

6.测试工程

在你的main.cpp文件中编写opencv相关代码,测试环境是否构建成功。你可以选择下面这段代码,但是务必更改图片文件的路径!

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

int main()
{
    std::string image_path = "/Users/freespirit/Pictures/Nayeon.png";
    cv::Mat gray_img = cv::imread(image_path, 1);
    if (gray_img.empty())
    {
        std::cout << "no file" << std::endl;
        return 0;
    }
    cv::imshow("image", gray_img);

    cv::waitKey(0);
    return 0;
}

测试成功截图如下:

在这里插入图片描述

7.消除警告

在这里插入图片描述

你注意到虽然测试程序成功运行了,但是在左侧的警告栏中出现了40个警告(Empty paragraph passed to '@param' command)!这是由于这些源码中的@注释在Xcode或者说是在MacOS系统中不合适引起的(因为在Windows下的Visual Studio C++中没有这样的问题),按照下面截图中的提示在“Build Settings”-“Apple Clang - Custom Compiler Flags”-“Other Warning Flags”中输入“-Wno-documentation”。

在这里插入图片描述
这样操作之后,并没有消除全部警告,还剩下七个警告(Arithmetic between different enumeration types ('......' and '......') is deprecated),这是Xcode已经弃用了不同枚举类型之间的算术运算而OpenCV源代码中还存在这样的运算导致的警告,警告截图如下:

在这里插入图片描述
解决方法与上一个方法相同,按照下面截图中的提示在“Build Settings”-“Apple Clang - Custom Compiler Flags”-“Other Warning Flags”中输入“-Wno-deprecated”。

在这里插入图片描述
再次运行测试程序,没有警告:

在这里插入图片描述

对您有用的话,请一键三连呀 >_<

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没伞的行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值