java - 从命令行在 Ubuntu 上运行 Java OpenCV

标签 java opencv ubuntu

我正在尝试使用 OpenCV 库在 Ubuntu 14.04 64 位上编译和运行一个简单的 Java 代码示例,该示例可在 OpenCV 的文档中找到: Java OpenCV Documentation

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.core.Scalar;

class SimpleSample
{
    static
    {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args)
    {
        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());
    }
}

既然只是一个简单的测试,我真的不想使用任何复杂的构建系统。所以我正在使用以下命令进行编译:

javac -cp "/usr/share/OpenCV/java/opencv-248.jar" SimpleSample.java

但是我无法运行该应用程序,因为当我调用时: Java 简单示例

我遇到以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/opencv/core/Core

at SimpleSample.<clinit>(SimpleSample.java:10)

Caused by: java.lang.ClassNotFoundException: org.opencv.core.Core
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

谁能帮我运行这个应用程序?

最佳答案

opencv-248.jar 不在 CLASSPATH 中。您可以按如下方式运行它:

java -cp /usr/share/OpenCV/java/opencv-248.jar:. SimpleSample

从源代码编译并将libopencv_java248.so 复制到$JAVA_HOME/jre/lib/amb64/目录中。此平台特定文件未包含在 jar 文件中。在没有安装此文件的情况下运行示例程序将出现 “java.lang.UnsatisfiedLinkError: no opencv_java248 in java.library.path” 错误。另请注意,需要安装 Apache Ant 才能在编译期间生成此平台特定文件。

关于java - 从命令行在 Ubuntu 上运行 Java OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682254/

相关文章:

java - 在 Android 中异步执行方法的最佳方式(紧凑且正确)

python - Python-OpenCV-返回最低的底部矩形

android - 我如何使用 opencv 从相机的所有位置检测带有 android 的人脸?

node.js 集群,将子级标准输出重定向到文件中断数据

java - 用 Java 发送电子邮件

java - 帮助我理解在 java 中这个循环中发生了什么

java - Jackson - 多版本字段;回退到默认解串器

c++ - 如何在 opencl 中使用 cv::mat

node.js - 无法使用 Node 请求模块在 Linux 上读取 LinkedIn 内容

linux - gnome-打开窗口定位