如何在IntelliJ IDEA 12中使用OpenCV

9

我想使用IntelliJ IDEA 12来开发Java中的OpenCV 2.4.5应用程序。我已经按照网站这里上Eclipse的说明进行了操作。

我的问题是,我可以将jar文件添加到库中,但我不知道如何将本地文件添加到类路径中。

6个回答

18

为了在Java中使用本地库,您需要指定java.library.path系统属性,以便JVM知道在哪里查找它们。

在IntelliJ中,可以在Run/Debug Configuration -> Application -> VM options中完成此操作,输入:

-Djava.library.path=path/to/native/libraries

-Djava.library.path=path/to/dll

3
例如,在Windows环境下: -Djava.library.path="C:/OpenCv 2.4.6/build/java/x64" 该命令指定Java程序运行时加载本地库文件的路径。 - Gondy
我发现通过菜单->文件->项目结构更容易添加本地库,详情请参见此处http://stackoverflow.com/questions/40352831/i-need-to-install-opencv-and-use-it-via-java-in-mavenintellij-on-windows-and-m/40354365#40354365。 - Dmitry Konovalov

10
  • Download OpenCV-2.4.5-android-sdk.zip from OpenCV site
  • Extract to where ever as OpenCV-2.4.5-android-sdk, mine happened to be

    /home/anthony/Documents/OpenCV-2.4.5-android-sdk/

  • Open IntelliJ and choose Import

  • Select the folder to import

    /home/anthony/Documents/OpenCV-2.4.5-android-sdk/sdk/java/

     yours will be a little different, 
     don't worry, just chose where you 
     extracted OpenCV-2.4.5-android-sdk
    
  • Once the Import wizard finishes, build the app with menu

Build -> Rebuild Project

  • 关闭项目

  • 创建新项目或打开现有项目
  • 然后

文件->导入模块

  • 这次选择

/home/anthony/Documents/OpenCV-2.4.5-android-sdk/sdk/java/XXX.iml

我的是sdk.iml,但你的可能是其他名称,但只会有一个

iml 文件 Select iml file to import module

现在您可以开始使用OpenCV函数,从输入

import org.

一旦输入句点,IntelliJ应该会弹出选项列表之一是

opencv

Now OpenCV is correctly integrated in your IDE

其余的就由您决定了。


谢谢,这是我找到的最简单的解决方案,用OpenCV 3.1和Android Studio。小提示--唯一缺少的说明是:1)“打开模块设置”(右键单击项目中的“应用程序”即可找到),在“依赖项”下,单击“+”按钮,然后选择“模块依赖项”,然后选择OpenCV。2)从OpenCV sdk中,将sdk/native/libs目录复制到您的项目的app/src/main目录下,并将其重命名为jniLibs。 - Greg Sadetsky

6

我认为自从之前的回答发布以来情况有些改变,我现在已经尝试过它们(opencv 2.4.9),并想要添加一些东西:

从一开始:

首先从“上面”的文件夹中执行终端命令cmake -DBUILD_SHARED_LIBS=OFF opencv-2.4.9/,然后执行make -j8,这可能需要一段时间。

现在,在Intellij中转到文件|项目结构,选择全局库,并添加位于opencv/bin下的open-cv jar。

在这一点上,如果您尝试运行其中一个示例,您可能会得到类似于Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java249 in java.library.path的内容。

接下来,如上所述,转到运行|编辑配置,并将-Djava.library.path=/absolute-path-to/opencv/lib添加到VM选项中。

当然,查看 open-cv的Java文档 总是一个好主意。

打开项目结构对话框(Ctrl+Shift+Alt+S) - GPrathap
在IntelliJ中,通过菜单->文件->项目结构很容易添加本地库,请参见http://stackoverflow.com/questions/40352831/i-need-to-install-opencv-and-use-it-via-java-in-mavenintellij-on-windows-and-m/40354365#40354365。 - Dmitry Konovalov

1

首先通过PowerShell安装Chocolatey,使用以下命令:

Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iwr https://community.chocolatey.org/install.ps1 -UseBasicParsing | iex

安装完Chocolatey之后,运行以下命令:

choco install opencv

以上命令将会安装最新版本的opencv。

您需要手动创建一个OPENCV_DIR环境变量,然后将%OPENCV_DIR%\bin添加到您的PATH中。环境设置 完成这些步骤后,只需添加以下Maven依赖项即可。

 <dependencies>
    <dependency>
        <groupId>org.openpnp</groupId>
        <artifactId>opencv</artifactId>
        <version>4.5.1-2</version>
    </dependency>
</dependencies>

然后添加这段代码;

 OpenCV.loadLocally();

然后它就可以完美地运行了!!!

下面的代码片段是用来测试的。

 OpenCV.loadLocally();
    System.out.println("Welcome to OpenCV " + Core.VERSION);

    Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0));
    System.out.println("OpenCV Mat: " + m);
    Mat mr1 = m.row(1);
    mr1.setTo(new Scalar(1));
    Mat mc5 = m.col(5);
    mc5.setTo(new Scalar(5));
    System.out.println("OpenCV Mat data:\n" + m.dump());

0
为了运行任何使用OpenCV的程序,您需要确保OpenCV二进制文件位于java.library.path上,也就是环境变量'Path'应该包含指向您的opencv_java***.dll文件的路径。每当Java运行外部库时,它都需要知道在特定操作系统中查找二进制文件的位置。在我的情况下,Windows 10 x64:
D:\software\opencv\build\java\x64\opencv_java420.dll

确保更改上面的目录以匹配您自己的。确保使用适合您操作系统的正确二进制文件。

如果您仅寻找依赖项管理,请转到OpenCV文件夹并在程序目录中找到opencv-***.jar文件:

D:\software\opencv\build\java\opencv-420.jar

我们需要将这个jar文件作为Gradle的依赖项添加,因此请在您的build.gradle文件中将以下内容添加到您的依赖项中:
compile fileTree(dir: 'D:\\software\\opencv\\build\\java\\', includes: ['*jar'])

确保将上面的目录名称更改为与您的匹配。

您还可以将依赖项保留在项目目录中,在项目根目录中创建一个'libs'文件夹,并将上述目录更改为libs。这对于组织或维护软件库版本可能会更新的软件非常有帮助。


0

这些答案都没有帮助到我解决问题。我找到了这个链接:https://github.com/ctodobom/OpenCV-3.1.0-Android,它是目前为止最简单的安卓解决方案。 -编辑- 要使用这个方法,你需要有一个Github仓库,并按照以下步骤操作: 1. 找到Github仓库 2. 在project/build.gradle中添加maven { url 'https://jitpack.io' } 3. 然后,在app/build.gradle中添加compile 'com.github.ctodobom:OpenCV-3.1.0-Android:-SNAPSHOT'。这里包含了Github网站、用户名、仓库和仓库的第一部分。这将把它链接到你的应用程序中。 -编辑- 此外,如果这种方法对你并没有像我一样有效,那么可以尝试使用JavaCV。当我第一次实现这种方法时,它似乎是有效的,因为IDE读取到所有函数都是有效的,我不会收到任何错误信息。但实际上只是读取而没有导入,所以在某些情况下,它会按预期工作,但在某些情况下则不会。因此,它可能适用于你,但我最终选择了JavaCV,我认为它更容易使用。


你能在你的回答中发布步骤吗?即使只是一小段代码片段,也比仅仅重定向人们要有用得多。 - Thomas Smyth - Treliant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接