上一教程 : Java 开发简介
下一个教程 : 使用 Clojure 开发 OpenCV 简介
原作者 | Barış Evrim Demiröz |
---|---|
兼容性 | OpenCV >= 3.0 |
警告
本教程可能包含过时信息。
自 2.4.4 版起,OpenCV 支持 Java。在本教程中,我将介绍如何在 Windows 下通过 Eclipse 设置 OpenCV Java 的开发环境,这样您就可以享受到垃圾回收、可重构(重命名变量、提取方法等)的现代语言所带来的好处,让您在编写代码时事半功倍、少犯错误。我们开始吧。
配置 Eclipse
首先,从下载页面获取一个新版本的 OpenCV,并将其解压到一个简单的位置,如 C:\OpenCV-2.4.6\
。我使用的是 2.4.6 版本,但其他版本的步骤大致相同。
现在,我们将在 Eclipse 中把 OpenCV 定义为用户库,这样就可以在任何项目中重复使用配置。启动 Eclipse 并从菜单中选择 Window -> Preferences。
在 Java -> Build Path -> User Libaries 下导航,然后单击 New…
输入新库的名称,如 OpenCV-2.4.6。
现在选择新的用户库,点击添加外部 JAR…
浏览 C:\OpenCV-2.4.6\build\java
并选择 opencv-246.jar。添加完 jar 后,扩展 opencv-246.jar,选择本地库位置并按编辑…。
选择外部文件夹…并浏览选择文件夹 C:\OpenCV-2.4.6\buildjava\x64
。如果你的系统是 32 位的,你需要选择 x86 文件夹,而不是 x64 文件夹。
您的用户库配置应该如下所示:
在新 Java 项目中测试配置
现在开始创建一个新的 Java 项目。
在 "Java 设置 "步骤中,在 "库 "选项卡下选择 "添加库… "并选择 OpenCV-2.4.6,然后单击 “完成”。
库应该是这样的:
现在,您已经创建并配置了一个新的 Java 项目,是时候进行测试了。创建一个新的 java 文件。为方便起见,这里有一段启动代码:
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class Hello
{
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() );
}
}
运行代码后,输出将是 3x3 同调矩阵。
就是这样,无论何时开始一个新项目,只需将您定义的 OpenCV 用户库添加到您的项目中即可。请尽情享受您功能强大、痛苦较少的开发环境吧)
运行依赖 OpenCV 和 MKL 的 Java 代码
如果您在使用 MKL 库构建 OpenCV 时,使用了一些调用使用英特尔 MKL 的 OpenCV 函数的 Java 代码,则可能会出现以下错误(例如在 Ubuntu 上):
Intel MKL FATAL ERROR: 无法加载 libmkl_avx2.so 或 libmkl_def.so。
在 Linux 上,解决这个问题的办法之一是预加载英特尔 MKL 库(在终端运行命令或将其添加到 .bashrc
文件中)。您的命令行应该类似于下面的内容(如果已经设置了 LD_PRELOAD
变量,请在前面添加 $LD_PRELOAD:
):
export
LD_PRELOAD=/opt/intel/mkl/lib/intel64/libmkl_core.so:/opt/intel/mkl/lib/intel64/libmkl_sequential.so
然后,在设置了此环境变量的终端运行 Eclipse IDE(echo $LD_PRELOAD
),错误就会消失。