Can you please post the code that you used to do this? My team has mounted the camera upside down, and I need to flip the image in code. I couldn't find any documentation on NIVision, and I would appreciate any help.
I am using Java and this is my current command, which is set to run while the robot is disabled. It currently doesn't correctly send an image to the SmartDashboard and throws and exception occasionally.
Code:
package org.usfirst.frc.team1939.robot.commands.camera;
import org.usfirst.frc.team1939.robot.Robot;
import com.ni.vision.NIVision;
import com.ni.vision.NIVision.FlipAxis;
import com.ni.vision.NIVision.Image;
import com.ni.vision.NIVision.ImageType;
import edu.wpi.first.wpilibj.CameraServer;
import edu.wpi.first.wpilibj.command.Command;
import edu.wpi.first.wpilibj.vision.USBCamera;
public class CameraUpdater extends Command {
private USBCamera camera;
private CameraServer server;
public CameraUpdater() {
requires(Robot.camera);
}
@Override
protected void initialize() {
this.camera = new USBCamera("cam0");
this.server = CameraServer.getInstance();
this.camera.startCapture();
}
@Override
protected void execute() {
Image source = NIVision.imaqCreateImage(ImageType.IMAGE_RGB, 0);
this.camera.getImage(source);
Image dest = NIVision.imaqCreateImage(ImageType.IMAGE_RGB, 0);
NIVision.imaqFlip(dest, source, FlipAxis.CENTER_AXIS);
this.server.setImage(dest);
}
@Override
protected boolean isFinished() {
return false;
}
@Override
protected void end() {
}
@Override
protected void interrupted() {
}
}