Opencv Configuration on MacOS
1.下载OpenCV
Opencv安装命令
下载解压资源包后,找到一个文件目录放置,在解压好的文件如:opencv-4.3.0
下创建一个新文件目录,命名为release,在终端中进入到这个文件目录,输入以下命令:
$cmake -G “Unix Makefiles” .. (如果提示权限问题,加sudo)
$make (可以加-j2;-j4;-j8等表示多线程编译)
$sudo make install
安装成功后在/usr/local/lib下会有关于libopencvXXX.dylib文件,在/usr/local/include下会有opencv4、opencv2目录
通过Homebrew安装
- 下载Homebrew,Homebrew是Mac上的一个包管理软件,相当于linux上的apt-get,wget等,根据Homebrew官网的教程下载不出意外是会失败的
第一步,获取install文件
通过如下代码把官网的脚本拿下来
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install
第二步,更改脚本中的资源链接,替换成清华大学的镜像
就是把这两句
BREW_REPO = “https://github.com/Homebrew/brew“.freeze
CORE_TAP_REPO = “https://github.com/Homebrew/homebrew-core“.freeze
替换成
BREW_REPO = “https://mirrors.ustc.edu.cn/brew.git “.freeze
CORE_TAP_REPO = “https://mirrors.ustc.edu.cn/homebrew-core.git“.freeze
如果镜像有问题,可以换成其他的镜像源,接着执行脚本文件
ruby brew_install
出现报错是因为源不通,更换为其他的国内镜像源
git clone git://mirrors.ustc.edu.cn/homebrew-core.git/ /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core --depth=1
然后把homebrew-core的镜像地址也设为中科院的国内镜像
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
# 替换核心软件仓库
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
执行更新,成功
brew update
最后用这个命令检查无错误:
brew doctor
最后接着换源:
#替换 cask 软件仓库(提供 macOS 应用和大型二进制文件)
cd "$(brew --repo)"/Library/Taps/caskroom/homebrew-cask
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
#替换 Bottles 源(Homebrew 预编译二进制软件包)
bash(默认 shell)用户:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
zsh 用户:
~ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
~ source ~/.zshrc
执行完以上步骤,你就应该在Mac上安装好了Homebrew,并且可以用它来安装Cmake,OpenCV等
- 安装OpenCV
brew install opencv
经过漫长的等待,OpenCV安装完成,可以在/usr/local/Cellar/opencv/4.3.0_3/include
和/usr/local/Cellar/opencv/4.3.0_3/lib
文件目录下分别找到头文件和库文件
- 在终端中运行
创建一个文件目录,创建CMakeLists.txt和main.cpp文件
CMakeLists.txt
#版本
cmake_minimum_required(VERSION 3.15.1)
#项目名称
project( test )
#设置OpenCV所在目录,为后面的find_package提供位置
#OpenCV_DIR为OpenCV源码编译后得到的文件夹(如上面的release目录)
set( OpenCV_DIR /Users/hongyi/MyServers/opencv-3.3.1/release)
#会在OpenCV所在目录查找配置文件OpenCVConfig.cmake
find_package( OpenCV REQUIRED )
#向工程添加源文件
add_executable( test main.cpp )
#添加链接库
target_link_libraries( test ${OpenCV_LIBS} )
使用Cmake --Version
可以查询Cmake版本,这里需要注意的是,find_package
里一定要找到OpenCVConfig.cmake
Main.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv) {
Mat image;
image = imread("/Users/..", 1); //输入正确的图片路径
namedWindow("Display Image", WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(0);
return 0;
}
在终端运行命令:
$ cmake .
$ make
$ ./test #生成的二进制文件的文件名
- 在Clion中使用
原理和在终端中运行一样,需要将新建项目里的CmakeLists.txt文件加上:
find_package(OpenCV REQUIRED)
target_link_libraries(test_opencv ${OpenCV_LIBS})
- 在Xcode中使用
- 单击项目名,选择”Building Settings” -> “Search Paths”,相应位置填上相应路径,在Header Search Paths里输入:
/usr/local/Cellar/opencv/4.3.0_3/include
头文件路径,在Library Search Paths里输入:/usr/local/Cellar/opencv/4.3.0_3/lib
库文件路径 - 在项目下创建一个lib group,将相应的lib文件,通过”Add to Files”拷贝进去,文件在上面安装时的库文件目录下,记住替身文件不用添加(就是左下角有箭头的)
运行时出现的错误
一开始运行就出现了,如下错误:
大概意思就是动态库文件libopencore-amrnb.0.dylib未成功导入,于是就寻找这个文件
发现果然没有,这里最开始我没看仔细把libopencore-amrwb.0.dylib当成了libopencore-amrnb.0.dylib,我就很疑惑,明明有文件为什么导入不了?于是就走上了岔路…
最后发现opencore-amr是FFmpeg这个库的一项依赖,经过了解FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,具体OpenCV为什么要导入它我也不太清楚,最后经过,重新安装依赖
$ brew install opencore-amr
于是就把libopencore-amrnb.0.dylib这个库安装好了,最后运行
结束语
一定要看清楚报错信息,认真查看清楚再去搜索。
推荐阅读
-
Opencv Configuration on MacOS
-
OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建
-
黑苹果MacOS Sierra读写Windows NTFS盘的方法(非第三方软件)
-
Get Apache, PHP working on macOS Sierra
-
[Python] OpenCV 摄像头黑边问题
-
环境搭建 :OpenCV MacOS Xcode实现
-
MacOS High Sierra(10.13.2) 编译Faiss -- 包括问题解决
-
macOS Sierra 下安装svn方法
-
macOS下的opencv在xcode上的配置
-
Mac 下搭建 OpenCV 3.4.3 开发环境 配Xcode