Standalone Java Image Application

We are trying to build a standalone Java Image application that would read the camera, process the image, and post data to the Smart Dashboard. For debugging we would like to read in one of the sample images. However our code crashes using the RGBimage(“filename.jpg”) with a class not found exception.

We haven’t found any examples of standalone java applications. Only ones that use the cRIO. Can anyone help?

Here’s our simple program.

package javaimagesample;

import edu.wpi.first.wpilibj.image.ColorImage;
import edu.wpi.first.wpilibj.image.NIVisionException;
import edu.wpi.first.wpilibj.image.NIVision;
import edu.wpi.first.wpilibj.image.RGBImage;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*

  • @author l241870
    */
    public class JavaImageSample {

    /**
    * @param args the command line arguments
    */
    public static void main(String] args) {
    // TODO code application logic here
    ColorImage image; // next 2 lines read image from flash on cRIO
    try {
    image = new RGBImage("/10ft2.jpg");
    } catch (NIVisionException ex) {
    logger.getLogger(JavaImageSample.class.getName()).log(Level.SEVERE, null, ex);
    }
    }
    }

Here is the debugger output showing we error on the line
image = new RGBImage("/10ft2.jpg");
We have also tried defining the complete path to the image too.

debug:
Exception in thread “main” java.lang.NoClassDefFoundError: com/sun/cldc/jna/TaskExecutor
at edu.wpi.first.wpilibj.image.NIVision.<clinit>(NIVision.java:29)
at edu.wpi.first.wpilibj.image.Image.<init>(Image.java:24)
at edu.wpi.first.wpilibj.image.ColorImage.<init>(ColorImage.java:16)
at edu.wpi.first.wpilibj.image.RGBImage.<init>(RGBImage.java:32)
at javaimagesample.JavaImageSample.main(JavaImageSample.java:27)
Caused by: java.lang.ClassNotFoundException: com.sun.cldc.jna.TaskExecutor
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
… 5 more
Java Result: 1
BUILD SUCCESSFUL (total time: 18 seconds)

This is usually a java version error, try and see if you are compiling in Java 7, if so then try and make it compile in Java 6.

You can’t just take WPIlibJ programs set up to run under the SquawkVM on the cRIO and run them under a regular VM on Windows. You would need a SquawkVM for Windows and significant rewriting of the code to support this. To do image processing on a PC check out the Smart Dashboard vision extension.

Thanks for the answer. I’ll install the SmartDashboard and OpenCV as per WPILibCookbook and try that.

http://www.wbrobotics.com/attachments/article/11/WPILibCookbook.pdf

Note I did try the program using Netbeans 6.9.1 and that fails too. It makes sense that the libraries are written for the Alpha on the cRIO. So much for JAVA portability.

I’ve downloaded the SmartDashboard installer with OpenCV, then tried the example code based on:
http://www.wbrobotics.com/attachments/article/11/WPILibCookbook.pdf
page 74.

First I added the jar file to the libraries which are installed at C:\Program Files\SmartDashboard\extensions\WPICameraExtension.jar

I assume that’s the library needed?

**My program looks like:
**

import edu.wpi.first.smartdashboard.camera.WPICameraExtension;

public class BasicCameraExtension extends WPICameraExtension {
@Override
public WPIImage processImage(WPIColorImage rawImage) {
return super.processImage(rawImage);
}
}

There are errors
On the @Override statement I get “method does not override or implement a method from a supertype”.

On WPIImage I get cannot find symbol.

On WPIColorImage I also get cannot find symbol.

It looks to me like I’m not pointing to the correct libraries again.