Skip to content

Commit 2da1ee3

Browse files
author
AleksandrPanov
committed
add getters to CharucoBoard
1 parent 6b648cd commit 2da1ee3

File tree

4 files changed

+23
-23
lines changed

4 files changed

+23
-23
lines changed

modules/aruco/src/aruco.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ bool estimatePoseCharucoBoard(InputArray charucoCorners, InputArray charucoIds,
108108
objPoints.reserve(charucoIds.getMat().total());
109109
for(unsigned int i = 0; i < charucoIds.getMat().total(); i++) {
110110
int currId = charucoIds.getMat().at< int >(i);
111-
CV_Assert(currId >= 0 && currId < (int)board->chessboardCorners.size());
112-
objPoints.push_back(board->chessboardCorners[currId]);
111+
CV_Assert(currId >= 0 && currId < (int)board->getChessboardCorners().size());
112+
objPoints.push_back(board->getChessboardCorners()[currId]);
113113
}
114114

115115
// points need to be in different lines, check if detected points are enough

modules/aruco/src/aruco_calib.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ double calibrateCameraCharuco(InputArrayOfArrays _charucoCorners, InputArrayOfAr
7575

7676
for(unsigned int j = 0; j < nCorners; j++) {
7777
int pointId = _charucoIds.getMat(i).at< int >(j);
78-
CV_Assert(pointId >= 0 && pointId < (int)_board->chessboardCorners.size());
79-
allObjPoints[i].push_back(_board->chessboardCorners[pointId]);
78+
CV_Assert(pointId >= 0 && pointId < (int)_board->getChessboardCorners().size());
79+
allObjPoints[i].push_back(_board->getChessboardCorners()[pointId]);
8080
}
8181
}
8282
return calibrateCamera(allObjPoints, _charucoCorners, imageSize, _cameraMatrix, _distCoeffs, _rvecs, _tvecs,

modules/aruco/src/charuco.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ static int _filterCornersWithoutMinMarkers(const Ptr<CharucoBoard> &_board,
3030
int currentCharucoId = _allCharucoIds.getMat().at< int >(i);
3131
int totalMarkers = 0; // nomber of closest marker detected
3232
// look for closest markers
33-
for(unsigned int m = 0; m < _board->nearestMarkerIdx[currentCharucoId].size(); m++) {
34-
int markerId = _board->getIds()[_board->nearestMarkerIdx[currentCharucoId][m]];
33+
for(unsigned int m = 0; m < _board->getNearestMarkerIdx()[currentCharucoId].size(); m++) {
34+
int markerId = _board->getIds()[_board->getNearestMarkerIdx()[currentCharucoId][m]];
3535
bool found = false;
3636
for(unsigned int k = 0; k < _allArucoIds.getMat().total(); k++) {
3737
if(_allArucoIds.getMat().at< int >(k) == markerId) {
@@ -133,15 +133,15 @@ static void _getMaximumSubPixWindowSizes(InputArrayOfArrays markerCorners, Input
133133

134134
for(unsigned int i = 0; i < nCharucoCorners; i++) {
135135
if(charucoCorners.getMat().at< Point2f >(i) == Point2f(-1, -1)) continue;
136-
if(board->nearestMarkerIdx[i].size() == 0) continue;
136+
if(board->getNearestMarkerIdx()[i].size() == 0) continue;
137137

138138
double minDist = -1;
139139
int counter = 0;
140140

141141
// calculate the distance to each of the closest corner of each closest marker
142-
for(unsigned int j = 0; j < board->nearestMarkerIdx[i].size(); j++) {
142+
for(unsigned int j = 0; j < board->getNearestMarkerIdx()[i].size(); j++) {
143143
// find marker
144-
int markerId = board->getIds()[board->nearestMarkerIdx[i][j]];
144+
int markerId = board->getIds()[board->getNearestMarkerIdx()[i][j]];
145145
int markerIdx = -1;
146146
for(unsigned int k = 0; k < markerIds.getMat().total(); k++) {
147147
if(markerIds.getMat().at< int >(k) == markerId) {
@@ -151,7 +151,7 @@ static void _getMaximumSubPixWindowSizes(InputArrayOfArrays markerCorners, Input
151151
}
152152
if(markerIdx == -1) continue;
153153
Point2f markerCorner =
154-
markerCorners.getMat(markerIdx).at< Point2f >(board->nearestMarkerCorners[i][j]);
154+
markerCorners.getMat(markerIdx).at< Point2f >(board->getNearestMarkerCorners()[i][j]);
155155
Point2f charucoCorner = charucoCorners.getMat().at< Point2f >(i);
156156
double dist = norm(markerCorner - charucoCorner);
157157
if(minDist == -1) minDist = dist; // if first distance, just assign it
@@ -200,7 +200,7 @@ static int _interpolateCornersCharucoApproxCalib(InputArrayOfArrays _markerCorne
200200
// project chessboard corners
201201
vector< Point2f > allChessboardImgPoints;
202202

203-
projectPoints(_board->chessboardCorners, approximatedRvec, approximatedTvec, _cameraMatrix,
203+
projectPoints(_board->getChessboardCorners(), approximatedRvec, approximatedTvec, _cameraMatrix,
204204
_distCoeffs, allChessboardImgPoints);
205205

206206

@@ -257,17 +257,17 @@ static int _interpolateCornersCharucoLocalHom(InputArrayOfArrays _markerCorners,
257257
validTransform[i] = std::abs(det) > 1e-6;
258258
}
259259

260-
unsigned int nCharucoCorners = (unsigned int)_board->chessboardCorners.size();
260+
unsigned int nCharucoCorners = (unsigned int)_board->getChessboardCorners().size();
261261
vector< Point2f > allChessboardImgPoints(nCharucoCorners, Point2f(-1, -1));
262262

263263
// for each charuco corner, calculate its interpolation position based on the closest markers
264264
// homographies
265265
for(unsigned int i = 0; i < nCharucoCorners; i++) {
266-
Point2f objPoint2D = Point2f(_board->chessboardCorners[i].x, _board->chessboardCorners[i].y);
266+
Point2f objPoint2D = Point2f(_board->getChessboardCorners()[i].x, _board->getChessboardCorners()[i].y);
267267

268268
vector< Point2f > interpolatedPositions;
269-
for(unsigned int j = 0; j < _board->nearestMarkerIdx[i].size(); j++) {
270-
int markerId = _board->getIds()[_board->nearestMarkerIdx[i][j]];
269+
for(unsigned int j = 0; j < _board->getNearestMarkerIdx()[i].size(); j++) {
270+
int markerId = _board->getIds()[_board->getNearestMarkerIdx()[i][j]];
271271
int markerIdx = -1;
272272
for(unsigned int k = 0; k < _markerIds.getMat().total(); k++) {
273273
if(_markerIds.getMat().at< int >(k) == markerId) {

modules/aruco/test/test_charucodetection.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ void CV_CharucoDetection::run(int) {
185185
vector< Point2f > projectedCharucoCorners;
186186

187187
// copy chessboardCorners
188-
vector<Point3f> copyChessboardCorners = board->chessboardCorners;
188+
vector<Point3f> copyChessboardCorners = board->getChessboardCorners();
189189
// move copyChessboardCorners points
190190
for (size_t i = 0; i < copyChessboardCorners.size(); i++)
191191
copyChessboardCorners[i] -= board->getRightBottomBorder() / 2.f;
@@ -196,7 +196,7 @@ void CV_CharucoDetection::run(int) {
196196

197197
int currentId = charucoIds[i];
198198

199-
if(currentId >= (int)board->chessboardCorners.size()) {
199+
if(currentId >= (int)board->getChessboardCorners().size()) {
200200
ts->printf(cvtest::TS::LOG, "Invalid Charuco corner id");
201201
ts->set_failed_test_info(cvtest::TS::FAIL_MISMATCH);
202202
return;
@@ -300,14 +300,14 @@ void CV_CharucoPoseEstimation::run(int) {
300300
// check estimate result
301301
vector< Point2f > projectedCharucoCorners;
302302

303-
projectPoints(board->chessboardCorners, rvec, tvec, cameraMatrix, distCoeffs,
303+
projectPoints(board->getChessboardCorners(), rvec, tvec, cameraMatrix, distCoeffs,
304304
projectedCharucoCorners);
305305

306306
for(unsigned int i = 0; i < charucoIds.size(); i++) {
307307

308308
int currentId = charucoIds[i];
309309

310-
if(currentId >= (int)board->chessboardCorners.size()) {
310+
if(currentId >= (int)board->getChessboardCorners().size()) {
311311
ts->printf(cvtest::TS::LOG, "Invalid Charuco corner id");
312312
ts->set_failed_test_info(cvtest::TS::FAIL_MISMATCH);
313313
return;
@@ -414,7 +414,7 @@ void CV_CharucoDiamondDetection::run(int) {
414414
vector< Point2f > projectedDiamondCorners;
415415

416416
// copy chessboardCorners
417-
vector<Point3f> copyChessboardCorners = board->chessboardCorners;
417+
vector<Point3f> copyChessboardCorners = board->getChessboardCorners();
418418
// move copyChessboardCorners points
419419
for (size_t i = 0; i < copyChessboardCorners.size(); i++)
420420
copyChessboardCorners[i] -= board->getRightBottomBorder() / 2.f;
@@ -499,10 +499,10 @@ void CV_CharucoBoardCreation::run(int)
499499
Ptr<aruco::CharucoBoard> board_millimeters = aruco::CharucoBoard::create(
500500
n, n, squareSize_mm, squareSize_mm * markerSizeFactor, dictionary);
501501

502-
for (size_t i = 0; i < board_meters->nearestMarkerIdx.size(); i++)
502+
for (size_t i = 0; i < board_meters->getNearestMarkerIdx().size(); i++)
503503
{
504-
if (board_meters->nearestMarkerIdx[i].size() != board_millimeters->nearestMarkerIdx[i].size() ||
505-
board_meters->nearestMarkerIdx[i][0] != board_millimeters->nearestMarkerIdx[i][0])
504+
if (board_meters->getNearestMarkerIdx()[i].size() != board_millimeters->getNearestMarkerIdx()[i].size() ||
505+
board_meters->getNearestMarkerIdx()[i][0] != board_millimeters->getNearestMarkerIdx()[i][0])
506506
{
507507
ts->printf(cvtest::TS::LOG,
508508
cv::format("Charuco board topology is sensitive to scale with squareSize=%.1f\n",

0 commit comments

Comments
 (0)