【问题标题】:I need some help to get a .png image to show up with the opencv 2.4.3 library in netbeans我需要一些帮助来获得一个 .png 图像以显示在 netbeans 中的 opencv 2.4.3 库中
【发布时间】:2015-08-13 08:54:10
【问题描述】:

我在 Ubuntu 12.04 的 netbeans 上尝试使用 java 中的模板进行测试时收到此错误。根据代码下方的错误信息,我需要从这里做什么。它是说我应该做些什么来解决我的问题。

这是我的代码

    import org.opencv.core.Mat;
    import org.opencv.highgui.Highgui;

    public class again {
         public static void main(String[] args) {
     Mat m=Highgui.imread("/root/image.png",Highgui.CV_LOAD_IMAGE_OLOR);




      }
  }

运行: 线程“主”java.lang.UnsatisfiedLinkError 中的异常:org.opencv.highgui.Highgui.imread_0(Ljava/lang/String;I)J 在 org.opencv.highgui.Highgui.imread_0(本机方法) 在 org.opencv.highgui.Highgui.imread(Highgui.java:296) 在again.main(again.java:22) Java 结果:1

更新:我更改了代码,它说它编译成功,但我仍然无法让它在窗口中显示图像。我还有另一个类应该是“互连的”来显示图片,但它没有。

    public class again {
    public static void main(String[] args) {

}

     Mat m=Highgui.imread("/root/image.png",Highgui.CV_LOAD_IMAGE_COLOR);
    LoadImage loadImage= new LoadImage("/root/image.png",m);



}

这是另一个类

    import java.awt.*;
    import javax.swing.*;
    import org.opencv.core.Mat;
    import org.opencv.highgui.Highgui;
    import javax.swing.JFrame;
    import javax.swing.JLabel;


    public class LoadImage extends JFrame {
         public static void main(String[] args) {

 }
       public LoadImage(String imgStr,Mat m)
  {
       Highgui.imwrite(imgStr,m);
       JFrame frame = new JFrame("My GUI");
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

     frame.setResizable(true);
     frame.setLocationRelativeTo(null);

      // Inserts the image icon
      ImageIcon image = new ImageIcon(imgStr);
      frame.setSize(image.getIconWidth()+10,image.getIconHeight()+35);

     // Draw the Image data into the BufferedImage
     JLabel label1 = new JLabel(" ", image, JLabel.CENTER);
     frame.getContentPane().add(label1);

         frame.validate();
         frame.setVisible(true);}



    }

抱歉,我无法正确安装它,但我无法找出我正在使用的 java 版本,或者更糟糕的是我可能没有安装 java

    root@ubuntu:/# sudo java –version
    Exception in thread "main" java.lang.NoClassDefFoundError: –version
    Caused by: java.lang.ClassNotFoundException: –version
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    Could not find the main class: –version. Program will exit.

【问题讨论】:

    标签: java opencv netbeans


    【解决方案1】:

    最简单的解决方案似乎是使用 PatternDiscussing 提供的 OpenCV 包并使用 maven 项目。

    如他们的 GitHub 项目页面所述:
    https://github.com/patternconsulting/opencv

    我补充说:

        <dependency>
            <groupId>nu.pattern</groupId>
            <artifactId>opencv</artifactId>
            <version>2.4.9-7</version>
        </dependency>
    

    到我的 pom.xml 文件和 main 之前的这段代码。

    static {
        nu.pattern.OpenCV.loadShared();
    }
    

    对于 Ant 项目,在 Netbeans 中称为 Java 项目:

    从以下位置下载 jar 本身: http://central.maven.org/maven2/nu/pattern/opencv/2.4.9-7/opencv-2.4.9-7.jar

    在项目窗口中你的项目下右键Libraries,选择Add Jar/Folder,选择下载的jar。

    您还需要从中提取所有文件:

    jar -xf ~/Downloads/opencv-2.4.9-7.jar

    而不是使用 nu.pattern.OpenCV.loadShared();只需在适用于您平台的正确版本的共享库上调用 System.load()。

    例如。

    static {
        System.load("/home/shackle/nu/pattern/opencv/linux/x86_32/libopencv_java249.so");
    }
    

    其中任何一个更改都对我有用。

    您将需要一个现代版本的 JDK。

    在任何平台上获取最新的 netbeans 和 JDK: 在此处使用“带有 JDK8 的 Netbeans”: http://www.oracle.com/technetwork/java/javase/downloads/index.html

    设置 ubuntu 存储库以引入 JDK 8。 请按照此处的说明进行操作: http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/

    完成后,您可能需要将该 JDK 添加为平台并更新项目设置以使用更高版本的 JDK。 添加平台: 转到 Netbeans 中的工具-> Java 平台菜单,然后单击“添加平台”按钮。

    要更新项目设置: 选择您的项目,右键单击属性,选择库,然后在标有 Java 平台的下拉框中选择不同的平台。

    【讨论】:

    • 我在尝试安装库时遇到了问题,我需要为 Ubuntu 下载库,例如 junit 库,但我尝试遵循以前答案中关于 ubuntufourms 的帮助;但它没有用。
    • 那奇怪的 maven 应该在必要时安装正确版本的 junit。 Netbeans 已经附带了 junit 版本 3.8.2 和 4.10,这对于我的基于 ant 的项目来说很好。此外,junit 仅用于自动化单元测试,不应要求构建或运行此应用程序。你在使用模式咨询包吗?
    • 我尝试制作自己的包来加载并从我从 github 下载的源中复制 OpenCV.java。我发现我没有 import java.nio.file.*; Ubuntu 上的 netbeans 中的功能。我试图在谷歌上搜索;但我在 linux 上找不到 netbeans 的库。你能从这里帮助我吗?
    • 什么是模式咨询包?我确实尝试阅读自述文件和 github 上的站点;但我没有通读它,因为我很着急。
    • 模式咨询包是我在答案中包含链接的项目/jar 文件。它是预构建的,因此您不需要 OpenCV 源代码。没有 java.nio.file.* 表示您使用的是非常旧的 JDK 版本。我将添加有关如何获取最新版本的说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多