Skip to content

Commit

Permalink
Remove extra legacy calibration things
Browse files Browse the repository at this point in the history
  • Loading branch information
mcm001 committed Jan 3, 2024
1 parent 1ad2a84 commit 3506d8f
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,14 @@ public static void rotationToOpencvRvec(Rotation3d rotation, Mat rvecOutput) {
rvecOutput.put(0, 0, axis.getData());
}

/**
* Convert an Opencv rvec+tvec pair to a Pose3d.
*
* @param rVec Axis-angle rotation vector, where norm(rVec) is the angle about a unit vector in
* the direction of rVec
* @param tVec 3D translation
* @return Pose3d representing the same rigid transform
*/
public static Pose3d opencvRTtoPose3d(Mat rVec, Mat tVec) {
Translation3d translation =
new Translation3d(tVec.get(0, 0)[0], tVec.get(1, 0)[0], tVec.get(2, 0)[0]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,18 @@
package org.photonvision.vision.pipeline;

import edu.wpi.first.math.util.Units;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.photonvision.common.configuration.ConfigManager;
import org.photonvision.common.dataflow.DataChangeService;
import org.photonvision.common.dataflow.events.OutgoingUIEvent;
import org.photonvision.common.logging.LogGroup;
import org.photonvision.common.logging.Logger;
import org.photonvision.common.util.SerializationUtils;
import org.photonvision.common.util.file.FileUtils;
import org.photonvision.vision.calibration.BoardObservation;
import org.photonvision.vision.calibration.CameraCalibrationCoefficients;
import org.photonvision.vision.frame.Frame;
Expand Down Expand Up @@ -71,9 +67,6 @@ public class Calibrate3dPipeline

private boolean calibrating = false;

// Path to save images
private final Path imageDir;

private static final FrameThresholdType PROCESSING_TYPE = FrameThresholdType.NONE;

public Calibrate3dPipeline(String uniqueName) {
Expand All @@ -85,8 +78,6 @@ public Calibrate3dPipeline(int minSnapshots, String uniqueName) {
this.settings = new Calibration3dPipelineSettings();
this.foundCornersList = new ArrayList<>();
this.minSnapshots = minSnapshots;
this.imageDir =
Path.of(ConfigManager.getInstance().getCalibDir().toAbsolutePath().toString(), uniqueName);
}

@Override
Expand Down Expand Up @@ -144,7 +135,6 @@ protected CVPipelineResult process(Frame frame, Calibration3dPipelineSettings se
findBoardResult.inputImage = inputColorMat.clone();

foundCornersList.add(findBoardResult);
saveCalImage(inputColorMat);

// update the UI
broadcastState();
Expand All @@ -162,32 +152,12 @@ protected CVPipelineResult process(Frame frame, Calibration3dPipelineSettings se
getCornersList());
}

private void saveCalImage(Mat img) {
var folder = Path.of(imageDir.toString(), img.size().toString());
if (!folder.toFile().exists()) {
folder.toFile().mkdirs();
}
if (!folder.toFile().exists()) {
logger.error("Could not create save folder! " + folder);
}
Imgcodecs.imwrite(
Path.of(folder.toAbsolutePath().toString(), "img" + foundCornersList.size() + ".png")
.toString(),
img);
}

List<List<Point>> getCornersList() {
return foundCornersList.stream()
.map(it -> it.imagePoints.toList())
.collect(Collectors.toList());
}

public void deleteSavedImages(Size resolution) {
var folder = Path.of(imageDir.toString(), resolution.toString());
folder.toFile().mkdirs();
FileUtils.deleteDirectory(folder);
}

public boolean hasEnough() {
return foundCornersList.size() >= minSnapshots;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,6 @@ public void startCalibration(UICalibrationData data) {
var videoMode = visionSource.getSettables().getAllVideoModes().get(data.videoModeIndex);
var resolution = new Size(videoMode.width, videoMode.height);

pipelineManager.calibration3dPipeline.deleteSavedImages(resolution);
settings.cameraVideoModeIndex = data.videoModeIndex;
visionSource.getSettables().setVideoModeIndex(data.videoModeIndex);
logger.info(
Expand Down

0 comments on commit 3506d8f

Please sign in to comment.