java - 我需要安装 opencv 并在 Maven+IntelliJ(在 Windows 和 macOS/OSX 上)中通过 java 使用它。

标签 java windows macos opencv intellij-idea

我需要安装 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 enter image description here

继续直到你得到 enter image description here 启用自动导入!

创建新类 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());
    }
}

你应该得到这样的东西: enter image description here

现在,最后是有效负载 ;-) 选择文件 -> 项目结构: enter image description here

选择库(或全局库),并添加 java 库: enter image description here

来自 https://stackoverflow.com/a/24853043/1006226 :导航到 ~/dev/lib/opencv/github_opencv_161101/opencv/release/bin 在我的例子中,或 ~/path_to_your_dir/opencv/release/binenter image description here

您现在可以编译并运行您的 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

enter image description here enter image description here

现在,您已通过 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/

相关文章:

java - 使用 DnD 在 JPanel 中移动和重新排序 JLabel

C# Windows 窗体 : Looping through Dynamically created TextBoxes and checking to see if Text has changed

macos - 如何在 osx 中制作像侧边栏这样的草图/页面

macos - 在cocoa中打开共享文件夹中的文件

linux - D可以编译成平台独立代码吗?

ios - Xcode 5 调试 - CPU 报告/使用情况中的 "Unnamed"线程

java - 如何监听当前线程的变化?

java - 为什么我的循环会随机加速和减速?

java - 如何检查数组是否为空或数组内容是否为空

windows - 同时将声音输出到多个音频设备