MacOS下利用CMake编译安装OpenCV(带Contrib包)

[email protected]

所需环境:

  • CMake 3.9 及以上

  • Git

  • Python 2.7 及以上

  • NumPy 1.5 及以上

若没有这些环境,请到文末的环境安装教程部分查看,并将它们安装好。

注意

OSX 默认附带Python 2.7,如果需要使用Python 3,则需要单独下载Python 3.8及以上版本;安装Xcode 和Xcode Command Line Tools 后会附带Git,无需再单独安装。

获取OpenCV 源代码

根据需要,可以选择稳定版本的OpenCV 或者最新的版本(可能不稳定)。

1. 获取稳定版本

稳定版本的源代码可从OpenCV官网的Release页面获取,选择相应版本的Sources下载后解压即可。

2. 获取最新版本

通过git克隆OpenCV的 仓库,或访问GitHub后选Download ZIP下载压缩文件后解压。

以下出现的 ~均表示你的个人目录/Users/,在CMake中需要替换为绝对路径/Users/;以下均以在 ~目录下建立opencv文件夹为例

打开终端(Terminal),执行下面的指令

# ~
mkdir opencv/sources
cd opencv/sources
git clone https://github.com/opencv/opencv.git

如果需要安装额外的模块,即opencv_contrib,也要同样克隆contrib的仓库:

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

注意

opencv-contrib是为OpenCV开发的“额外”模块。目前没有的稳定API且没有经过完整测试,因而不能作为官方版本的一部分一同发布。这些模块稳定后,就会被加入到OpenCV中。opencv-contri包含的额外模块以及大概的功能(4.x),可以参看:https://github.com/opencv/opencv_contrib/blob/4.x/modules/README.md。

编译安装 OpenCV

在opencv目录下,创建build目录:

# ~/opencv
mkdir build
cd build

此时,opencv目录结构如下(你的source目录下的文件夹名可能有所不同):

.
└── opencv
    ├── build
    └── source
        ├── opencv
        └── opencv_contrib

1. 生成编译文件

1.1 使用CMake GUI

  • 打开cmake-gui,将source code 的目录设置为 ~/opencv/source/opencv,将build目录设置为~/opencv/build(将~替换为你的用户目录/Users/);

  • 点击Configure,(无特殊需要)选择Unix Makefiles和默认的编译器,等待完成;

MacOS下利用CMake编译安装OpenCV(带Contrib包)_第1张图片

  • 第一次完成后,根据需要修改相应的参数。(红色的参数代表新值)

  • 如果需要安装opencv-contrib,修改对应的OPENCV_EXTRA_MODULES_PATH参数为contrib包下的modules目录,本例中为~/opencv/source/opencv_contrib/modules

  • 如果需要安装示例,将BUILD_EXAMPLES的值打勾;

MacOS下利用CMake编译安装OpenCV(带Contrib包)_第2张图片

  • 利用CMake编译,会默认安装到系统的目录中,一般是/usr/local。如果需要安装到指定的目录下,例如opencv/opencv_libs,将CMAKE_INSTALL_PREFIX的值修改为相应的目录;

MacOS下利用CMake编译安装OpenCV(带Contrib包)_第3张图片

  • 建议将CMAKE_BUILD_TYPE设置为Release

  • 其他参数根据需要修改,具体参考:OpenCV: OpenCV configuration options reference

  • 修改完参数后,再次点击Configure;

  • 观察输出中没有红色的错误信息后,点击Generate;

注意

在Configure的过程中,会下载一部分必要的文件,可能会出现下载错误,例如:

CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
xfeatures2d/boostdesc: Download failed: 6;"Couldn't resolve host name"
​
For details please refer to the download log file:
​
~/opencv/build/CMakeDownloadLog.txt

一般这些错误是因为CMake 无法直接下载这些文件。打开CMakeDownloaLog.txt文件,找到相关的下载的信息:

#use_cache "~/opencv/source/opencv/.cache"
...
...
#cmake_download "~/opencv/source/opencv/.cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i"
#try 1
# getaddrinfo(3) failed for raw.githubusercontent.com:443
# Could not resolve host: raw.githubusercontent.com
# Closing connection 0
# 
...
...

可以确定是网络问题导致了错误。尝试访问#cmake_download中的下载链接,例如这里是https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i。如果你能正常下载,将其拷贝到相应的目录即可,这里即:~/opencv/source/opencv/.cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i 。如果不能下载,则需要找到相应的文件,例如别人已经下载好的文件;或切换到可以访问github的网络下,或者更改你的代理设置,之后再次尝试下载。

如果失败的文件较多,可以借助脚本来下载,笔者已经写好了一个python脚本用于下载这些文件,戳这里:OpenCV在CMake时出现文件无法下载的解决办法(利用python自动下载脚本)_HNU跃鹿战队的博客-CSDN博客

1.2 使用CMake 命令行

使用命令行与使用GUI软件类似,只是你需要将这些参数全部转换成相应的指令。例如:

# build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=ON -DOPENCV_EXTRA_MODULES_PATH="../source/opencv_contrib/modules/" -DCMAKE_INSTALL_PREFIX="../opencv/opencv_libs" ../source/opencv/

出现错误的解决办法也类似于使用GUI。多为网络原因下载失败,尝试切换网络环境或手动下载好之后重新执行cmake的命令即可。

2. 编译安装

完成cmake之后,在build目录下使用make编译:

# build
make -j16

-j16指的是同时执行16个任务(jobs),可以加快编译速度。根据你CPU的性能,选择合适的参数将每个核心拉满即可。

根据性能不同,编译时间大约五到十分钟。编译成功后进行安装:

# build
make install 

大约需要十几秒。至此OpenCV安装完成。

注意

编译过程中也可能会出现错误。注意检查Configure和Generate的过程中是否有报错;如果没有,再查看make的报错,寻找原因。如果你之前使用过Homebrew安装过OpenCV,可能会有相应的软件包发生冲突。例如:

...
make[2]: *** No rule to make target `zlib', needed by `lib/libopencv_imgcodecs.4.5.5.dylib'.  Stop.
...

此时有两种解决办法:

1.卸载Homebrew,等待编译成功后重新安装;

2.将BUILD-ZLIB参数取消打勾(-DBUILD_ZLIB=OFF).

其他问题也多数与这样的冲突有关。

如果你的OpenCV安装到了/usr/local目录下,一般无需配置环境变量;若你安装到自定义的目录,为了让编译器找到OpenCV,有两种办法:

  • 修改环境变量

在CMakeLists设置OpenCV_DIR为你的安装目录,例如你安装到~/opencv/opencv_libs,按下面的方式修改:

set(OpenCV_DIR ~/opencv/opencv_libs/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)

依赖环境安装

如果你知道例如Homebrew,CMake等的安装,这部分可以忽略。

1. Xcode 的安装

安装有两种方式:

  1. 在App Store中搜索Xcode安装;

  2. 访问Sign In - Apple,找到所需版本的Xcode下载安装。

2. Xcode Command Line Tools的安装

安装有两种方式:

  1. 在终端输入

    xcode-select --install

    等待安装成功即可;

  2. 访问访问Sign In - Apple,找到对应于Xcode版本的CLT下载安装。

3. CMake 的安装

安装有两种方式

  1. 利用Homebrew安装:

    brew install cmake
  2. 访问Download | CMake,下载CMake GUI。之后若想在命令行中使用,打开CMake,点击Tools,点击How to Install For Command Line Use,参考提示操作即可。

    MacOS下利用CMake编译安装OpenCV(带Contrib包)_第4张图片

4. Git 的安装

有多种方式安装:

  • 安装Xcode 和CLT 后,无需额外安装

  • 利用Homebrew 安装:

    brew install git

其他方式参考:Git - Downloading Package 。

你可能感兴趣的:(开发环境配置,opencv,macos,人工智能)