介绍在 MacOs 下安装 OpenCV 3.x
环境
macOS Sierraopencv 3.x
安装步骤
参看官网文档,Installing OpenCV for Java under macOS
安装 Homebrew
安装 xcode, 一般如果用Mac作开发,都是安装了的,可以忽略这步骤.
xcode-select --install
安装 ant 编译
brew install ant
安装后命令路径/usr/local/bin/ant
安装 openCV,默认 openCV 是不会编译成 java 的 jar包的。所以需要先修改opencv 配置文件来支持 java 编译成 jar。
brew edit opencv
打开 brew 对 opencv 的安装配置。- 修改
-DBUILD_opencv_java=OFF
为-DBUILD_opencv_java=ON
,然后保存 - 安装 opencv
brew install --build-from-source opencv
等待安装完成即可。
安装过程中几个说明
- 安装过程跟网络环境有直接关系,最好翻墙,或者更换 homebrew 源。我是翻墙的,所以下载读取资源差不多耗时15分钟。
- 最后一步安装 opencv 时,全程无状态条,只有命令行窗口头部不定期的更新文件头,总之不要认为他挂掉了而把它关掉。我是 15年 macbook pro ,差不多这一个步骤20分钟左右。
- 全程安装了差不多40分钟。
opencv 安装后的路径。
/usr/local/Cellar/opencv
opencv java 编译后的 jar 及 macos 动态库位置
/usr/local/Cellar/opencv/3.x.x/share/OpenCV/java/
Java 创建 java 项目
参看官网文档,Your First Java Application with OpenCV
创建 java 项目。
- 普通项目,直接复制 lib 至项目中
- maven 项目,配置本地加载 lib 即可
1
2
3
4
5
6
7<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>3.4.0</version>
<systemPath>/usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/java/opencv-340.jar</systemPath>
<scope>system</scope>
</dependency>
测试代码
1 | public class HelloCV { |
关于加载动态库
通过 System.loadLibrary() 加载
1 | System.loadLibrary(Core.NATIVE_LIBRARY_NAME); |
您需要在您的 IDE 中设置加载动态库
- windows 下加载 dll 文件
- macos 下加载 dylib 文件
官网提示的方法:
通过System.load()加载
1 | String opencvpath = "/usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/java/libopencv_java340.dylib"; |
这种方式更灵活,方便根据您的系统环境来决定加载路径。适合软件在部署时。
自己写了个 loadLibraries 函数
1 | private static void loadLibraries() { |
安装过程的坑
找不到 libjpeg.8.dylib
1 | Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib |
这个算是 brew 安装 opencv 的一个 bug,通过 brew 安装 opencv,会安装最新的 libjpeg 包。
在我安装时,安装的9b
版本。并没有8d
版。而opencv3.x 使用的8d
版。 出现这种情况有几种解决办法。
安装libjpeg,8d 版本
我是参考stack overflow 上的回答来解决的。原文地址
1 | wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gz |
当然,我们没有 wget,所以把地址复制下来,浏览器打开下载即可。第二部解压也可手动解压了。
所以可以简化为如下4步即可。
1 | cd jpeg-8d |
通过编译方式解决
这个没试过,需要手动安装opencv,make 运行环境,手动 ant。
在手动安装 make 时,老是出错,就放弃了。