WPICameraExtension using ColorImage and BinaryImage methods

Sooo I am trying to use all of the particleFilter and convexHull methods that ColorImage and BinaryImage has to offer.

I realize many people use findContours and all that stuff that goes with that but I want to use the great filters CriteriaCollection stuff.

The WPICameraExtension has WPIColorImage and WPIBinaryImage but there seems to be NO way to convert between the normal ColorImage and BinaryImage.

The only way I have figured out a way is if I save the rawImage


// Save file from camera for use
BufferedImage bi = rawImage.getBufferedImage();
File outputfile = new File("cameraOutput.jpg");
ImageIO.write(bi, "jpg", outputfile);

and then use

ColorImage image = new RGBImage("cameraOutput.jpg");

My problem is the RGBImage() seems to stall the program. It does not give any exception and does not run any code beneath it. RGBImage() is the method used in the camera test sample in netbeans.

Is there a way to make my own system to create a ColorImage? or how do I get around this issue?

Here is the reduced code that I am trying to use (Make sure to Run as Administrator):


import edu.wpi.first.smartdashboard.camera.WPICameraExtension;
import edu.wpi.first.wpijavacv.WPIColorImage;
import edu.wpi.first.wpijavacv.WPIImage;
import edu.wpi.first.wpilibj.image.ColorImage;
import edu.wpi.first.wpilibj.image.RGBImage;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

public class SimpleCameraExtension extends WPICameraExtension 
{
    public static final String NAME = "Simple Camera Extension";
    
    @Override
    public WPIImage processImage(WPIColorImage rawImage) 
    {
        // Save file from camera for use
        try
        {
            File outputfile = new File("cameraOutput.jpg");
            
            //ColorImage image = (ColorImage)rawImage;
            SmartDashboard.putString("testingBefore", "" + System.nanoTime());

            ColorImage image = new RGBImage("cameraOutput.jpg");

            outputfile.delete(); // testing
        
        }
        catch(Exception e)
        {
            SmartDashboard.putString("exceptionHere", "" + System.nanoTime());
        }

        return rawImage.getRedChannel();
    }
}


Include these jars:
\SmartDashboard\extensions\WPICameraExtension.jar
\SmartDashboard\extensions\lib\WPIJavaCV.jar
\SmartDashboard\SmartDashboard.jar
wpilibj.jar