【问题标题】:How to use OpenCV with IntelliJ IDEA 12如何在 IntelliJ IDEA 12 中使用 OpenCV
【发布时间】:2013-05-01 01:06:21
【问题描述】:

我正在尝试使用 IntelliJ IDEA 12 在 Java 中开发 OpenCV 2.4.5 应用程序。我已按照网站 here 上的 Eclipse 说明进行操作。

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

【问题讨论】:

    标签: java opencv ide intellij-idea


    【解决方案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

    巧克力安装后

    choco install opencv

    以上命令将安装可用的opencv最新版本

    您需要手动创建一个 OPENCV_DIR 环境变量,然后将 %OPENCV_DIR%\bin 添加到您的 PATH 中。Environment setup 之后只需添加以下 Maven 依赖项

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

    然后添加这段代码;

     OpenCV.loadLocally();
    

    然后繁荣它会工作 hunky dory!!!!

    下面的代码片段是为了测试。

     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());
    

    【讨论】:

      【解决方案2】:

      为了运行任何使用 OpenCV 的程序,您需要确保 OpenCV 二进制文件位于 java.library.path aka 上。环境变量'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。这有助于组织或维护您可能会更新的软件的库版本。

      【讨论】:

        【解决方案3】:

        这些答案都没有帮助我解决问题。我发现了这个:https://github.com/ctodobom/OpenCV-3.1.0-Android,它是迄今为止最简单的 android 解决方案。 -编辑- 要使用它,你必须有一个你想要的 Github 存储库,但步骤如下。 1. 找到 GitHub 存储库 2. 将maven { url 'https://jitpack.io' } 添加到project/build.gradle。 3. 然后,在你的app/build.gradle 中添加compile 'com.github.ctodobom:OpenCV-3.1.0-Android:-SNAPSHOT' 这有 github 网站以及用户名、repo 和 repo 的第一个。这会将其链接到您的应用程序中。 -Edit- 此外,如果此方法实际上对您不起作用,就像对我一样,请尝试使用 JavaCV。当我第一次实现这个方法时,它似乎很有效,因为 IDE 正在读取所有函数都是有效的,我不会得到任何错误。它正在阅读它,但在某些情况下没有导入它,它会按预期工作,但在某些情况下它不会。因此,它可以为您工作,但我最终选择了 JavaCV,在我看来它更容易使用。

        【讨论】:

        • 您可以在答案中发布步骤吗?即使它只是一个小sn-p,它也比仅仅重定向人有用得多。
        【解决方案4】:

        我认为自从之前的答案发布以来事情已经发生了一些变化,我现在已经尝试过(opencv 2.4.9)并想添加一些东西:

        从头开始

        首先从终端cmake -DBUILD_SHARED_LIBS=OFF opencv-2.4.9/从您刚刚提取的open-cv文档“上方”的文件夹中执行,然后执行make -j8,这可能需要一段时间..

        现在,在 Intellij 中转到 File | Project Structure,然后选择 Global Libraries,然后添加位于 opencv/bin 下的 open-cv jar。

        此时,如果您尝试运行其中一个示例,您可能会得到类似Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java249 in java.library.path

        接下来,按照上面 dlx.folmead1 的建议,转到 Run | Edit Configuration,并添加到 VM 选项 -Djava.library.path=/absolute-path-to/opencv/lib

        当然,看看open-cv's documentation关于java和open-cv总是一个好主意

        【讨论】:

        【解决方案5】:
        • OpenCV site下载OpenCV-2.4.5-android-sdk.zip
        • 解压到原来的OpenCV-2.4.5-android-sdk,我的正好是

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

        • 打开 IntelliJ 并选择导入

        • 选择要导入的文件夹

          /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
          
        • 导入向导完成后,使用菜单构建应用程序

        构建 -> 重建项目

        • 关闭项目

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

        文件->导入模块

        • 这次选择

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

        我的是 sdk.iml,但你的可以是任何东西,但只有一个

        iml 文件

        您现在可以开始使用 OpenCV 函数了,首先输入

        导入组织。

        一旦你输入句点,IntelliJ 应该删除一个选项列表,其中一个是

        opencv

        剩下的看你自己了。

        【讨论】:

        • 谢谢,这是我将 OpenCV 3.1 与 Android Studio 结合使用的最简单的解决方案。小注意——唯一缺少的说明是:1)“打开模块设置”(右键单击项目中的“应用程序”以找到它)并在“依赖项”下,单击“+”按钮,然后选择“模块依赖项” ",然后是 OpenCV。 2) 从 OpenCV sdk 中,将 sdk/native/libs 目录复制到项目的 app/src/main 中,将其重命名为 jniLibs。
        【解决方案6】:

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

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

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

        【讨论】:

        • 例如Windows环境下:-Djava.library.path="C:/OpenCv 2.4.6/build/java/x64"
        • 我发现通过菜单->文件->项目结构添加本地库更容易,在此处查看更多详细信息stackoverflow.com/questions/40352831/…
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 2013-09-04
        • 1970-01-01
        • 2013-02-12
        • 1970-01-01
        • 2013-09-03
        • 1970-01-01
        相关资源
        最近更新 更多