基于 Xcode 搭建 OpenCV 开发环境

如何基于Xcode搭建OpenCV开发环境

我的开发平台是MacBook Pro (13-inch, M1, 2020),版本11.4,硕士课题是关于计算机视觉的,平时主要用Clion/PyCharm基于opencv-python/C++进行开发。近期闲来没事体验一下苹果官方的开发工具,由于遇到了一些坑,网上的资料也不是很多,因此决定记录一下配置过程。

相应工具的安装

Xcode-13

有两种安装方法:

  1. (推荐)在App Store中安装Xcode,直接安装就行,省心省事;
  2. 登录Apple Id开发者账号,在官方网站进行下载,注意系统版本要对应支持的版本;

Homebrew

HomebrewMac上的包管理工具,可以复制以下代码,直接在终端中安装。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

OpenCV

完成了Homebrew的安装,只需要通过brew命令即可安装openCV,由于自己编译OpenCV可能会出现很多问题,因此推荐通过用这种方法来安装。

brew install opencv

安装完成后,要记录一下你的OpenCV安装路径,如下图所示,我的OpenCV的安装路径是:

/opt/homebrew/Cellar/opencv/4.5.3_2
image-20220428144209309

pkg-config

pkg-config是在编译应用程序和库时使用的辅助工具,可以帮助我们找到找到正确的OpenCV 链接器符号 (Linker Flags) ,在后续的步骤中会用到。 安装pkg-config,也只需要在终端输入以下命令

brew install pkg-config

配置Xcode

6.创建Xcode项目

在配置OpenCV环境之前,我们首先要新建一个C++项目,如图所示,选择macOS -> Command Line Tool

image-20220428144440033

并在下一步中的编程语言中选择:C++

image-20220428144456538

使用pkg-config查看OpenCV的编译依赖

查看您的opencv.pc文件所在位置,一般opencv.pc文件所在位置为

/opt/homebrew/Cellar/opencv/<版本号>/lib/pkgconfig/

如笔者的版本为4.5.3_2opencv.pc现已改为opencv4.pc(不同电脑可能有所不同,读者可以cd到相应文件目录查看具体信息)

/opt/homebrew/Cellar/opencv/4.5.3_2/lib/pkgconfig/opencv4.pc

使用下面的命令查看OpenCV的链接器符号 (Linker Flags) ,笔者的代码为

pkg-config --cflags --libs /opt/homebrew/Cellar/opencv/4.5.3_2/lib/pkgconfig/opencv4.pc

你会得到类似于如下的输出结果,我们需要参照输出结果在 Xcode 中进行配置

-I/opt/homebrew/opt/opencv/include/opencv4 -L/opt/homebrew/opt/opencv/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -
...(后续省略)

设置Header Search Paths

在 Xcode 中设置 Header Search Paths,先单击 Xcode 项目,然后点击 Build Settings,然后搜索Header Search Paths。将 Header Search Paths 路径设置为刚才得到的输出结果“-I”之后的路径,如我需要对如下路径进行添加。

/opt/homebrew/opt/opencv/include/opencv4
image-20220428150736979

设置 Library Search Paths

类似地,在 Build Settings 中搜索Library Search Paths,将 Library Search Paths路径设置为刚才得到的输出结果“-L”之后的路径,如我需要对如下路径进行添加。注意,请将Lib目录手动拖动到最上头

/opt/homebrew/opt/opencv/lib
image-20220428150750424

设置Linker Flags

将上述pkg-config --cflags --libs .../opencv4.pc导出的一长串信息全部复制下来,添加到如下所示的框框里。

image-20220428150519963

测试

配置到这一步 Xcode 相关内容已经结束。可以尝试运行简单的OpenCV程序判断是否能够正常运行,以下给出简单的示例程序,功能仅为打开图片与退出。

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <unistd.h>

using namespace cv;
using namespace std;

int main( int argc, char** argv ) {
    printf("Hello, world!");	// 手工断点/doge
  
    char buf[200];
    getcwd(buf,sizeof(buf));
    printf("current working directory: %s\n", buf);	// 测试当前工作目录
  
    Mat image;
    image = imread("test.png", IMREAD_COLOR);	// 注意图片的路径
    
    if(! image.data ) {	// 养成良好工作习惯
        cout <<  "Could not open or find the image" << std::endl;
        return -1;
    }
  
    imshow( "Display window", image);
    waitKey(0);
    return 0;
}

运行结果展示:

image-20220428151225907

其它设置

使用相对路径

image-20220428151455058

Xcode使用图像或资源的绝对路径。为了设置相对路径需要设置Working Directory。依次点击

(菜单栏) Product > Scheme > Edit Scheme 
			|->	Run -> option -> ✅ Use Custom Working Directory

然后自定义项目目录。

image-20220428151550616

常见错误

Not a Doxygen trailing comment

image-20220428151644355

Build Settings 中搜索 “Documentation Comments”,将 Documentation Comments 设置为 No即可解决该问题。Doxygen 只是一种格式可以选择跳过检查。

posted @ 2022-04-28 15:26  CharmingZh  阅读(770)  评论(2编辑  收藏  举报