Skip to content

Commit f500f9f

Browse files
committed
add back dead jni code
1 parent 4e0c767 commit f500f9f

File tree

1 file changed

+41
-11
lines changed

1 file changed

+41
-11
lines changed

src/main/java/org/photonvision/mrcal/MrCalJNI.java

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,24 @@ public MrCalResult(
8585
}
8686
}
8787

88+
public double[] framePosesToRtToref() {
89+
double[] ret = new double[optimizedPoses.size() * 6];
90+
91+
for (int i = 0; i < optimizedPoses.size(); i++) {
92+
var pose = optimizedPoses.get(i);
93+
var r = pose.getRotation().toVector();
94+
var t = pose.getTranslation().toVector();
95+
ret[i * 6 + 0] = r.get(0);
96+
ret[i * 6 + 1] = r.get(1);
97+
ret[i * 6 + 2] = r.get(2);
98+
ret[i * 6 + 3] = t.get(0);
99+
ret[i * 6 + 4] = t.get(1);
100+
ret[i * 6 + 5] = t.get(2);
101+
}
102+
103+
return ret;
104+
}
105+
88106
@Override
89107
public String toString() {
90108
return "MrCalResult [success="
@@ -137,29 +155,21 @@ public static native double[] compute_uncertainty(
137155
double warpX,
138156
double warpY);
139157

140-
public static MrCalResult calibrateCamera(
158+
public static double[] makeObservations(
141159
List<MatOfPoint2f> board_corners,
142160
List<MatOfFloat> board_corner_levels,
143161
int boardWidth,
144-
int boardHeight,
145-
double boardSpacing,
146-
int imageWidth,
147-
int imageHeight,
148-
double focalLen) {
162+
int boardHeight) {
149163
double[] observations = new double[boardWidth * boardHeight * 3 * board_corners.size()];
150164

151-
if (!(board_corners.size() == board_corner_levels.size())) {
152-
return new MrCalResult(false);
153-
}
154-
155165
int i = 0;
156166
for (int b = 0; b < board_corners.size(); b++) {
157167
var board = board_corners.get(b);
158168
var levels = board_corner_levels.get(b).toArray();
159169
var corners = board.toArray();
160170

161171
if (!(corners.length == levels.length && corners.length == boardWidth * boardHeight)) {
162-
return new MrCalResult(false);
172+
return null;
163173
}
164174

165175
// Assume that we're correct in terms of row/column major-ness (lol)
@@ -176,9 +186,29 @@ public static MrCalResult calibrateCamera(
176186
}
177187

178188
if (i * 3 != observations.length) {
189+
return null;
190+
}
191+
192+
return observations;
193+
}
194+
195+
public static MrCalResult calibrateCamera(
196+
List<MatOfPoint2f> board_corners,
197+
List<MatOfFloat> board_corner_levels,
198+
int boardWidth,
199+
int boardHeight,
200+
double boardSpacing,
201+
int imageWidth,
202+
int imageHeight,
203+
double focalLen) {
204+
205+
if (!(board_corners.size() == board_corner_levels.size())) {
179206
return new MrCalResult(false);
180207
}
181208

209+
var observations =
210+
makeObservations(board_corners, board_corner_levels, boardWidth, boardHeight);
211+
182212
return mrcal_calibrate_camera(
183213
observations, boardWidth, boardHeight, boardSpacing, imageWidth, imageHeight, focalLen);
184214
}

0 commit comments

Comments
 (0)