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

在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
#include

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”。

在这里插入图片描述

再次运行测试程序,没有警告:

在这里插入图片描述

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

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/78089f43fa.html