added calibration accuracy, calib message, calib advanced menu

This commit is contained in:
ori agranat
2020-01-25 23:11:02 +02:00
parent 46f818ba6f
commit 3224e412de
3 changed files with 82 additions and 12 deletions

View File

@@ -38,6 +38,7 @@ public class Calibrate3dPipeline extends CVPipeline<DriverVisionPipeline.DriverP
private TermCriteria criteria = new TermCriteria(3, 30, 0.001); //(Imgproc.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
private int captureCount = 0;
private double calibrationAccuracy = 0;
private boolean wantsSnapshot = false;
private double squareSizeInches;
@@ -129,7 +130,7 @@ public class Calibrate3dPipeline extends CVPipeline<DriverVisionPipeline.DriverP
List<Mat> tvecs = new ArrayList<>();
try {
Calib3d.calibrateCamera(objpoints, imgpoints, imageSize, cameraMatrix, distortionCoeffs, rvecs, tvecs);
calibrationAccuracy = Calib3d.calibrateCamera(objpoints, imgpoints, imageSize, cameraMatrix, distortionCoeffs, rvecs, tvecs);
} catch(Exception e) {
System.err.println("Camera calibration failed!");
initPipeline(cameraCapture);
@@ -162,4 +163,8 @@ public class Calibrate3dPipeline extends CVPipeline<DriverVisionPipeline.DriverP
public int getSnapshotCount() {
return captureCount + 1;
}
public double getCalibrationAccuracy(){
return calibrationAccuracy;
}
}

View File

@@ -174,6 +174,9 @@ public class RequestHandler {
System.out.println("Finishing Cal");
if (pipeManager.calib3dPipe.hasEnoughSnapshots()) {
if (pipeManager.calib3dPipe.tryCalibration()) {
HashMap<String, Double> tmp = new HashMap<String, Double>();
tmp.put("accuracy", pipeManager.calib3dPipe.getCalibrationAccuracy());
ctx.json(tmp);
ctx.status(200);
} else {
System.err.println("CALFAIL");
@@ -181,7 +184,7 @@ public class RequestHandler {
}
}
pipeManager.setCalibrationMode(false);
ctx.status(200);
ctx.status(201);
}
public static void onPnpModel(Context ctx) throws JsonProcessingException {
@@ -202,7 +205,7 @@ public class RequestHandler {
var settings = (StandardCVPipelineSettings) VisionManager.getCurrentUIVisionProcess().pipelineManager.getCurrentPipeline().settings;
settings.targetCornerMat.fromList(pointsList);
}
} catch (Exception e){
} catch (Exception e) {
ctx.status(500);
}
}