Mac下安装及配置OpenCV环境(Xcode)

opencv吃性能么 opencv用什么硬件_cmake配置出错

OpenCV (Open Source Computer Vision Library)

OpenCV是Intel开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。支持WindowsLinuxMac OSIOSAndroid,提供了C++CJavaPythonMatlab的接口(但C++ 的接口较丰富)

应用领域 :人机互动 、物体识别 、图像分割 、人脸识别 、动作识别 、运动跟踪 、机器人


安装OpenCV

根据自己的 Mac 是否安装有下面的工具选择性安装

使用 brew 安装 cmake

在之前的博客中已经写到过关于 Mac 下安装 brew 以及如何更换成国内的镜像。

如果安装有 xcode,则已经安装有 cmake

brew install cmake

cmake可以根据不同的平台生成对应的makefile,然后就可以使用make指令快速便捷的编译你需要的程序。

使用 brew 安装 OpenCV
brew install opencv# 目前是OpenCV4.4
# 安装其它版本brew install opencv@3brew install opencv@2
brew info opencv# 查看当前版本

opencv吃性能么 opencv用什么硬件_phpstorm mac环境配置_02


配置环境

其实就是在各种IDE中引入这个库,但其中有很多坑,还有就是我肯定无法保证能解决你的问题,但是最好是能给你一个参考。

Xcode 中配置 OpenCV

C++麻烦的是,#include 进的东西,在编译时都需要自己配置好路径,这无疑增添了很多麻烦。

新建命令行

    

opencv吃性能么 opencv用什么硬件_opencv吃性能么_03

    

选择C++

opencv吃性能么 opencv用什么硬件_cmake配置出错_04

配置项目的头文件和库文件路径

opencv吃性能么 opencv用什么硬件_opencv吃性能么_05

  1. 选择 Build Settings 选择卡,修改 Header Search PathsLibrary Search Path
  2. 因为我使用 brew 默认下载的是 OpenCV4 ,因为每个人的情况不同,所以其配置的路径也不一定相同:
# Header Search Path:/usr/local/include/usr/local/include/opencv4# Library Search Path:/usr/local/lib
点击项目,选择 Build Phases 选项卡,添加库文件

    在 Finder 中找到 OpenCV 的二进制库文件。

 打开 Finder ,按下Shift + command + G ,输入路径 /usr/local/Cellar/opencv , 然后点击版本目录(比如我的是 4.4.0_1),然后点击打开lib,最后,搜索当前文件夹下的所有 .dylib 文件,拖入其中即可

opencv吃性能么 opencv用什么硬件_opencv吃性能么_06

opencv吃性能么 opencv用什么硬件_opencv吃性能么_07

写点代码试个水
//// main.cpp// newOpencv//// Created by 蒋秋山 on 2020/9/29.//#include#include#include#includeusing namespace cv;using namespace std;// 视频来源于摄像头VideoCapture capture(0);Mat edges;int main(int argc, const char * argv[]) {   while (true) {       Mat frame;       // 每一帧       capture >> frame;       // 转为灰度图       cvtColor(frame, edges, COLOR_BGR2GRAY);       blur(edges, edges, Size(7, 7));       Canny(edges, edges, 0, 30, 3);       // 边缘检测并显示边缘       imshow("Read Video", edges);       // 等待用户输入       if(waitKey(30) >= 0) break;  }   return 0;}

不幸的是编译能通过但运行出错~

opencv吃性能么 opencv用什么硬件_opencv吃性能么_08

原因在于 Mac 的安全策略,在未经用户同意的情况下,Xcode 无法调用摄像头。

解决无法调用摄像头的问题

方法一:

可以直接打开其生成的二进制文件,来调用用户摄像头,但其中需要两次双击打开,第一次通过弹窗确认调用摄像头权限,第二次才能正常运行。

方法二:

在项目的任意一个文件夹下新建一个 Info.plist 文件然后添加一个键 Privacy - Camera Usage Description ,其值设置为 YES ,将文件复制或者剪切到二进制文件所在目录(二进制文件在 Products 目录下,右键那个二进制文件可以到达其所在目录)「Mac 下默认隐藏了那个目录,所以一般不容易直接找到」。

最后编译运行两次,一次同意调用摄像头,然后就可以用了。

opencv吃性能么 opencv用什么硬件_phpstorm mac环境配置_09

opencv吃性能么 opencv用什么硬件_phpstorm mac环境配置_10

opencv吃性能么 opencv用什么硬件_cmake配置出错_11


后面会出一篇如何在 CLionPyCharm 中配置 OpenCV 环境