网上查了一堆的资料,发现大家主要有三种方式在Mac上面编译opencv的jar:
- 使用brew编译
- 使用cmake手动编译
- 使用maven编译(类似手动) brew编译没有成功,另外两种都成功了。
brew编译
检查XCode Command Line Tools
xcode-select --install
homebrew安装opencv3
brew tap homebrew/science
brew install opencv3 --HEAD --c++11 --with-ffmpeg --with-contrib --with-java
homebrew小知识:
brew [un]tap <github_userid/repo_name> #添加或者删除仓库
brew info <formula> #查看这个包的信息,从中我们可以得知有哪些选项可选。
#示例
brew install opencv3 --HEAD --c++11 --with-ffmpeg --with-contrib --with-java
brew --cache #获取brew缓存路径,将下载的文件放入缓存目录;
最后brew编译失败放弃
手动cmake编译
unzip opencv-3.2.0.zip
cd opencv-3.2.0
mkdir build
cd build
使用cmake生成MAKEFILE
cmake -DBUILD_SHARED_LIBS=OFF ..
开始编译
make -j8
这里使用8个核进行编译,据说这样可以缩短编译时间。mac在活动监视器.app→菜单栏【窗口】→CPU使用率,就可以查看自己的mac有几个cpu核心了,更多请阅读OS X:在四核以上系统中,活动监视器会显示一个 CPU 使用图。 编译完成后可以在build文件下面发现如下文件:
bin/opencv-3.2.0.jar
lib/libopencv_java320.so # linux环境生成的本地动态库so文件
lib/libopencv_java320.dll # windows环境生成的本地动态库dll文件
lib/libopencv_java320.dylib # mac环境生成的本地动态库dylib文件
注意:现在是在mac环境下面编译,故只生成了dylib文件。
使用maven编译(官方方法)
解压后在opecv-3.2.0的文件夹中找到platforms→maven→README.md文件,我主要是参考这里的方法进行编译的。
准备
需要配置:
- $JAVA_HOME
- $ANT_HOME
- $MAKEFLAGS=-j8
- 需要安装maven
maven编译
mvn clean install
###遇到一些问题:
找不到cmake-mave-plugin 3.4.1-b2-SNAPSHOT的maven插件的问题
找到platforms/maven/pom.xml文件,修改为如下:
<groupId>com.googlecode.cmake-maven-project</groupId>
<artifactId>cmake-maven-plugin</artifactId>
<version>3.4.1-b2</version>
Mac上面没有安装dpkg
brew install dpkg
maven检查找不到cmake,git,ant等命令,我明明已经安装了
找到上面的pom.xml文件,注解掉如下:
<!-- <argument>build-essential</argument>
<argument>cmake</argument>
<argument>git</argument>
<argument>libgtk2.0-dev</argument>
<argument>pkg-config</argument>
<argument>libavcodec-dev</argument>
<argument>libavformat-dev</argument>
<argument>libswscale-dev</argument>
<argument>python-dev</argument>
<argument>python-numpy</argument>
<argument>libtbb2</argument>
<argument>libtbb-dev</argument>
<argument>libjpeg-dev</argument>
<argument>libpng12-dev</argument>
<argument>libtiff5-dev</argument>
<argument>libjasper-dev</argument>
<argument>libdc1394-22-dev</argument>
<argument>ant</argument> -->
找不到libopencv_java320.so文件,但是编译生成了libopencv_java320.dylib文件
创建libopencv_java320.so软连接,连接到libopencv_java320.dylib文件上面去,找到目录
cd build/lib/
ln -s libopencv_java320.dylib libopencv_java320.so
#再使用maven编译,但不要clean了
mvn install
以上就是三种编译opencv的方式,brew的方式我没有成功,后面两种我都成功编译了。 Github上面我模仿做了一个事例代码。
参考: Introduction to Java Developmen Installing OpenCV for Java Day 12: OpenCV — Face Detection for Java Developers Core.rectangle returns can not resolve method error in openCv 3.0 HighGUI is missing from OpenCV 3.0.0 JAR