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

2023-05-16

--wongkai@hnu.edu.cn

所需环境:

  • 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/<your_name>,在CMake中需要替换为绝对路径/Users/<you_name>;以下均以在 ~目录下建立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/<your_name>);

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

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

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

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

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

  • 建议将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,参考提示操作即可。

4. Git 的安装

有多种方式安装:

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

  • 利用Homebrew 安装:

    brew install git

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MacOS下利用CMake编译安装OpenCV(带Contrib包) 的相关文章

  • 注册表操作,reg脚本简单编写

    注册表操作 xff0c reg脚本简单编写 添加项 Windows Registry Editor Version 5 00 HKEY CURRENT CONFIG System CurrentControlSet SERVICES TSD
  • EUI-64格式生成

    EUI 64 IEEE EUI 64地址表示有一个用于网络接口寻址的新标准 在IPV6中 xff0c 无状态自动配置机制使用EUI 64格式来自动配置IPV6地址 无状态自动配置是指在网络中没有DHCP服务器的情况下 xff0c 允许节点自
  • Git使用

    Git使用 生成RSA密钥对 ssh keygen t rsa C email t 指定生成的加密方式 C 添加注释 xff0c 一般来说是邮箱 注 xff1a 如果指定了文件名字为github rsa xff0c 需要配置config 内
  • maven 常用镜像仓库

    maven 常用镜像仓库 lt mirror gt lt id gt alimaven lt id gt lt mirrorOf gt central lt mirrorOf gt lt name gt aliyun maven lt na
  • 面向对象的语言主要有哪些

    面向对象程序设计 Object Oriented Programming xff0c OOP 的实质是选用一种面向对象程序设计语言 OOPL xff0c 采用对象 类及其相关概念所进行的程序设计 主要有Smalltalk Eiffel C
  • Python如何自制包、如何安装自己的包并导入

    首先科普一下包和模块的概念 xff1a 在Python中 xff0c 包是一个包含多个模块的目录 xff0c 而模块则是一个单独的文件 一个包可以包含多个模块 xff0c 也可以包含其他的子包 当一个目录下面有一个 init py文件时 x
  • 使用OpenFeign代替RestTemplate来请求接口

    在使用RestTemplate来调用接口服务的时候 xff0c 需要写一个调用地址的参数 xff0c 这样做不太好管理接口地址 xff0c OpenFeign就提供了一个比较好的管理方式 xff0c 类似于写一个Mapper的接口 xff0
  • 手把手教你如何一键备份和恢复微信聊天记录

    相信大家的聊天记录都非常重要 xff0c 怎么能说没就没 xff01 xff01 今天就分享一个备份聊天记录的方法 备份聊天记录 首先在电脑版微信上 xff0c 点击左下角 三条横杠标志 按钮 xff0c 选择 备份与恢复 在弹出的 备份与
  • MonoSDF: Exploring Monocular Geometric Cues for Neural Implicit Surface Reconstruction论文翻译

    机翻的 这篇属实看不懂 Abstract 近年来 xff0c 神经隐式表面重建方法已成为多视图三维重建的流行方法 与传统的多视图立体方法相比 xff0c 由于神经网络的归纳平滑偏差 xff0c 这些方法往往会产生更平滑和更完整的重建 最先进
  • SPSS入门教程—相关性分析使用方法

    IBM SPSS Statistics为用户提供了三种相关性分析的方法 xff0c 分别是双变量分析 偏相关分析和距离分析 xff0c 三种相关分析方法各针对不同的数据情况 xff0c 接下来我们将为大家介绍如何使用SPSS相关性分析中的距
  • 使用IBM SPSS Statistics的新手应该如何入门

    一 什么是IBM SPSS Statistics xff1f IBM SPSS Statistics 是一款强大的统计软件平台 xff0c 它所提供的数据分析功能 xff0c 可以帮助企业 个人对各类数据进行切实可行的洞察分析 xff0c
  • linux 下清空回收站命令

    linux 下清空回收站命令 sudo rm fr root Trash
  • 了解CV和RoboMaster视觉组(目录和大纲)

    NeoZng neozng1 64 hnu edu cn 全网最最最全的RoboMaster视觉组入门教程和概览来啦 xff01 0 Catalogue 摘要 视觉组在不同兵种中的作用 2 1 装甲板识别 2 2 能量机关 2 3 哨兵 2
  • 了解CV和RoboMaster视觉组(一)摘要

    NeoZng neozng1 64 hnu edu cn 1 摘要 在阅读本文之前 xff0c 你需要有计算机科学的基本知识并至少掌握一门编程语言 xff0c 同时对robomaster比赛规则和过程有大致的了解 若只是希望知道视觉组的基本
  • 了解CV和RoboMaster视觉组(二)视觉在各兵种中的作用

    NeoZng neozng1 64 hnu edu cn 2 视觉在各兵种中的作用 2 1 装甲板识别 xff08 步兵 英雄 无人机 xff09 由于机器人上安装的图传模块到操作手看到的第一视角的延迟加上操作手反应速度的延迟 xff0c
  • 了解CV和RoboMaster视觉组(三)视觉组使用的软件

    NeoZng neozng1 64 hnu edu cn 3 视觉组接触的软件 进行视觉开发会用到各种各样的软件 开发环境 辅助工具等 xff0c 所以很有必要了解一些相关的快捷键 命令 使用技巧 选择一款适合自己的IDE能够提高开发效率
  • 了解CV和RoboMaster视觉组(四)视觉组使用的硬件

    NeoZng neozng1 64 hnu edu cn 4 视觉组接触的硬件 虽然别人总觉得视觉组就是整天对着屏幕臭敲代码的程序员 xff0c 实际上我们也会接触很多的底层硬件与传感器 xff0c 在使用硬件的同时很可能还需要综合运用其他
  • (五)比赛中的CV算法(上)cv基础知识和opencv的api

    5 比赛中的CV算法 讲了这么多 xff0c 视觉组的重头戏 算法终于来了 在大部分时候我们都不需要设计底层的算法 xff0c 而是直接调用封装好的API xff0c 设计更具体的应用于特定问题的算法 当然 xff0c 有必要了解一下造轮子
  • (五)比赛中的CV算法(上2)目标检测初步:神经网络及优化方法

    NeoZng neozng1 64 hnu edu cn attention xff1a 5 2 5 3 5 4对于新人来说可能有一定难度 若是新人或刚入门的 RMer xff0c 可以由此直接跳转道第六部分继续阅读 xff0c 第六部分看
  • [论文翻译] SalsaNet: Fast Road and Vehicle Segmentation in LiDAR Point Clouds for Autonomous Driving

    Abstract 在本文中 xff0c 我们介绍了一种名为 SalsaNet 的深度编码器 解码器网络 xff0c 用于 3D LiDAR 点云的高效语义分割 SalsaNet 通过使用点云的鸟瞰图 BEV 图像投影来分割场景中的道路 可行

随机推荐