我需要安装 opencv 并在 Maven+IntelliJ(在 Windows 和 macOS/OSX 上)中通过 java 使用它。什么是“标准”或简单方法?
最佳答案
我在谷歌上广泛搜索并查看了 How to use OpenCV with IntelliJ IDEA 12 . 这是对我有用的,它看起来很简单。如果有“更好”和/或“标准”的方式,请发表评论。愿望 list :如果不再需要,我希望能够轻松地从我的计算机中删除 opencv(我的一些笔记本电脑磁盘空间不足)。
以下是在 macOS Sierra (10.12.1) 上完成的
第 1 步: 通过命令行(即 macOS/OSX 上的终端)下载并安装 opencv:参见 http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
2016 年 11 月 17 日更新:http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/linux_install/linux_install.html
$ mkdir ~/dev/lib/opencv/github_opencv_161101
$ cd ~/dev/lib/opencv/github_opencv_161101
$ git clone https://github.com/opencv/opencv.git
我使用 ~/dev/lib/opencv/github_opencv_161101
作为我的安装目录,所以我可以在需要时轻松删除它,并在安装时提醒自己。
第 2 步: 构建。请注意,$ sudo make install
下面的最后一个命令会将所有库复制到 /usr/local
。但是,我尝试通过至少两种其他方式(通过 brew 和 http://opencv.org/platforms/android.html )安装 opencv,所以我不确定 /usr/local
中有哪些库。
$ cd opencv
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make
$ sudo make install
使用工具注意事项:您还需要安装JavaSDK。我的 cmake
是
$ cmake -version
cmake version 3.6.2
如果您没有安装 cmake
,请使用 brew
(或从 http://brew.sh/ 安装)
$ brew install cmake
您可能还需要安装 Command Line Tools not working - OS X El Capitan/ macOS-sierra通过
$ xcode-select --install
第 3 步: 在 IntelliJ 中运行 HelloCV.java
。启动 IntelliJ。创建新项目。选择 Maven
创建新类 HelloCV 并输入(来自 https://github.com/opencv-java/opencv-java-tutorials/blob/master/docs/source/02-first-java-application-with-opencv.rst ):
public class HelloCV {
public static void main(String[] args){
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.println("mat = " + mat.dump());
}
}
来自 https://stackoverflow.com/a/24853043/1006226 :导航到 ~/dev/lib/opencv/github_opencv_161101/opencv/release/bin
在我的例子中,或 ~/path_to_your_dir/opencv/release/bin
。
您现在可以编译并运行您的 HelloCV.java:
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class HelloCV {
public static void main(String[] args){
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.println("mat = " + mat.dump());
}
}
但是你会得到以下运行时错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.dak.HelloCV.main(HelloCV.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Process finished with exit code 1
回到Menu->File->Project Structure,选择Libraries并添加
~/dev/lib/opencv/github_opencv_161101/opencv/release/lib
在我的例子中,或者 ~/path_to_your_dir/opencv/release/lib
现在,您已通过 JNI 链接到 native 库。运行 HelloCV,你应该得到:
mat = [ 1, 0, 0;
0, 1, 0;
0, 0, 1]
Process finished with exit code 0
关于java - 我需要安装 opencv 并在 Maven+IntelliJ(在 Windows 和 macOS/OSX 上)中通过 java 使用它。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40352831/