【发布时间】:2013-05-01 01:06:21
【问题描述】:
我正在尝试使用 IntelliJ IDEA 12 在 Java 中开发 OpenCV 2.4.5 应用程序。我已按照网站 here 上的 Eclipse 说明进行操作。
我遇到的问题是我可以将 jar 添加到我的库中,但我不知道如何将本地程序添加到我的类路径中。
【问题讨论】:
标签: java opencv ide intellij-idea
我正在尝试使用 IntelliJ IDEA 12 在 Java 中开发 OpenCV 2.4.5 应用程序。我已按照网站 here 上的 Eclipse 说明进行操作。
我遇到的问题是我可以将 jar 添加到我的库中,但我不知道如何将本地程序添加到我的类路径中。
【问题讨论】:
标签: java opencv ide intellij-idea
首先使用以下命令通过 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());
【讨论】:
为了运行任何使用 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。这有助于组织或维护您可能会更新的软件的库版本。
【讨论】:
这些答案都没有帮助我解决问题。我发现了这个: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,在我看来它更容易使用。
【讨论】:
我认为自从之前的答案发布以来事情已经发生了一些变化,我现在已经尝试过(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总是一个好主意
【讨论】:
解压到原来的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
剩下的看你自己了。
【讨论】:
为了在 Java 中使用本机库,您需要指定 java.library.path 系统属性,以便 JVM 知道在哪里查找它们。
在 IntelliJ 中,这可以在 Run/Debug Configuration -> Application -> VM options 中完成,输入:
-Djava.library.path=path/to/dll
【讨论】:
-Djava.library.path="C:/OpenCv 2.4.6/build/java/x64"