【问题标题】:Using OpenCV in Java with JavaCV在 Java 中使用 OpenCV 和 JavaCV
【发布时间】:2011-04-11 22:21:55
【问题描述】:

我越来越绝望了!!我正在尝试通过 JavaCV(JNA 为 Java 包装 OpenCV)在 Java 中使用 OpenCV

我使用的是 Mac Os X 1.5。

我安装了 OpenCV,我可以编译和运行包含的示例。这样就行了。

现在我打开 Eclipse,并创建一个新项目,如下所述: http://code.google.com/p/javacv/

在那个新项目中,只有一个小类调用了 opencv 函数(我使用了示例代码):

import static name.audet.samuel.javacv.jna.cxcore.*;
import static name.audet.samuel.javacv.jna.cv.*;
import static name.audet.samuel.javacv.jna.highgui.*;
import static name.audet.samuel.javacv.jna.cvaux.*;

public class Test {
    public static void main(String[] args) {
        IplImage image = cvLoadImage("test.png", 1);
        if (image == null) {
            System.err.println("Could not load image file.");
        } else {
            cvSmooth(image, image, CV_GAUSSIAN, 3, 0, 0, 0);
            // ...
        }
    }
}

当我运行它时,出现以下错误:

线程“main”中的异常 java.lang.UnsatisfiedLinkError:无法 加载库“cxcore”: dlopen(libcxcore.dylib, 9): 图像不 找到了

拜托,我需要帮助,我在谷歌上看了几个小时,我不知道该去哪里找了。

【问题讨论】:

  • @Matthieu:OSX 用户有时会遇到 32 位或 64 位 VM 之间的库兼容性问题。您可以尝试在启动 Eclipse 启动配置时将 -d32 选项作为 VM 参数吗
  • 我添加了代码(这是来自 JavaCV 的示例代码)。我尝试了“-d32”参数,但出现以下错误:“无法在 32 位模式下运行 Java。继续以 64 位模式运行。”也许是这样?
  • @Matthieu:可能。见code.google.com/p/javacv/issues/detail?id=12#c11。由于您的 Eclipse 处于 64 位模式,您需要确认您使用的是 64 位 OpenCV 版本。
  • 是的,但我明确地将 openCV 编译为 32 位,因为我的架构是 32 位的(嗯,我相当确定!我有一台 2009 年买的 macbook,最便宜的)。所以我不明白为什么 Eclipse 是 64 位的?有没有办法知道我的 Mac 是 32 位还是 64 位?

标签: java eclipse macos opencv javacv


【解决方案1】:

原来SVN版本不兼容JavaCV。

我下载了最新的正式版(2.1),编译安装,就可以了。

http://code.google.com/p/javacv/issues/detail?id=19

【讨论】:

  • 更简单的实现也可以看这里:ubaa.net/shared/processing/opencv
  • 好吧,事实证明 2.1 版本不起作用(至少在我的 OS X 10.5 机器上),但 SVN 在 C++ 程序中工作。但是 2.1 兼容 JavaCV,而不是 SVN 版本。所以现在对我来说,OpenCV 可以工作,但 JavaCV 不行。
【解决方案2】:

你需要链接这两个库:

- javacpp.jar
- javacv.jar

在 JavaCV/lib-opencv/win_x86_64 中你必须有你喜欢的文件:

 - msvcp100.dll
 - msvcr100.dll
 - opencv_core220.dll
 - opencv_calib3d220.dll
 - ...

这些 DLL 必须针对您的平台进行编译(win 32 / win 64 / Linux / etc.

您必须定义 OpneCV DLL 文件的路径:

-Djava.library.path=lib-opencv/win_x86_64/
- or the DLLs have to be somewhere in your system PATH of your operating system

【讨论】:

    【解决方案3】:

    我已经研究了这个问题一段时间,因为 OP 建议各种问题开始从木制品中爬出来。我浏览了大量 StackOverflow 帖子,以便能够为在 Java 中设置 OpenCV 项目提供一种相对轻松的体验。我浏览了JavaCV,发现它不符合我的需求。然而,当我使用某些 javacpp 版本时,我能够直接实现 OpenCV 帖子(C++ 帖子)中引用的功能,但使用 Java 语言。我也有很多编译问题,因为 javacpp 依赖于编译的 C++ 库,这些库必须是用户所在环境的本地库(生活在 Java 土地上的人喜欢不处理的东西)。无论如何,我能够使用 Maven 构建和环境。我使用 eclipse 但这应该可以在其他编程环境中正常工作。我提出了一个示例项目来说明如何开始构建引导项目并开始工作。 该项目根据它们的 URL 比较 2 个图像。这是一个平等测试,图像是否相同。希望这可以帮助人们在这种环境中进行设置和工作,并避免我在尝试在 Java 中使用 OpenCV 时遇到的大量陷阱(当时我在精神上与 OP 处于完全相同的位置:))。

    示例:https://github.com/darkhipo/ImgzCmp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      相关资源
      最近更新 更多