我需要安装opencv并通过Maven + IntelliJ中的Java(在Windows和MacOS / OSX上)使用它。 什么是“标准”或简单的方法?
我GOOGLE了广泛,看看如何使用IntelliJ IDEA 12 OpenCV 。 这是为我工作,它看起来很简单。 如果有“更好”和/或“标准”方式,请发表评论。 愿望清单: 我希望能够从我的电脑轻松地删除opencv,如果不再需要 (我的一些笔记本电脑用完磁盘空间)。
以下是在macOS Sierra(10.12.1)上完成的
第一步:通过命令行下载并安装opencv(即macOS / OSX上的Terminal):参见http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
UPDATE 17-Nov-2016: 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
。 然而,我试图通过至少另外两种方式安装opencv(通过brew和http://opencv.org/platforms/android.html ),所以我不确定哪些库位于/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
您可能还需要安装命令行工具不工作 – 通过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()); } }
你应该得到像这样的东西:
现在,终于有效载荷;-)选择文件 – >项目结构:
选择库(或全局库),并添加Java库:
从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
返回菜单 – >文件 – >项目结构,选择库并在我的情况下添加~/dev/lib/opencv/github_opencv_161101/opencv/release/lib
,或~/path_to_your_dir/opencv/release/lib
现在,你通过JNI链接到本地库。 运行HelloCV,你应该得到:
mat = [ 1, 0, 0; 0, 1, 0; 0, 0, 1] Process finished with exit code 0