我想使用IntelliJ IDEA 12来开发Java中的OpenCV 2.4.5应用程序。我已经按照网站这里上Eclipse的说明进行了操作。
我的问题是,我可以将jar文件添加到库中,但我不知道如何将本地文件添加到类路径中。
我想使用IntelliJ IDEA 12来开发Java中的OpenCV 2.4.5应用程序。我已经按照网站这里上Eclipse的说明进行了操作。
我的问题是,我可以将jar文件添加到库中,但我不知道如何将本地文件添加到类路径中。
为了在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
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 文件
现在您可以开始使用OpenCV函数,从输入
import org.
一旦输入句点,IntelliJ应该会弹出选项列表之一是
opencv
其余的就由您决定了。
我认为自从之前的回答发布以来情况有些改变,我现在已经尝试过它们(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选项中。
首先通过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());
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
build.gradle
文件中将以下内容添加到您的依赖项中:compile fileTree(dir: 'D:\\software\\opencv\\build\\java\\', includes: ['*jar'])
确保将上面的目录名称更改为与您的匹配。
您还可以将依赖项保留在项目目录中,在项目根目录中创建一个'libs'
文件夹,并将上述目录更改为libs
。这对于组织或维护软件库版本可能会更新的软件非常有帮助。
这些答案都没有帮助到我解决问题。我找到了这个链接: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,我认为它更容易使用。
-Djava.library.path="C:/OpenCv 2.4.6/build/java/x64"
该命令指定Java程序运行时加载本地库文件的路径。 - Gondy