Skip to content

Commit 52c0566

Browse files
author
AleksandrPanov
committed
remove Ptr DetectorParameters
1 parent f64e2d3 commit 52c0566

File tree

9 files changed

+73
-74
lines changed

9 files changed

+73
-74
lines changed

modules/aruco/perf/perf_aruco.cpp

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class MarkerPainter
8181
}
8282

8383
std::pair<Mat, vector<Point2f> > getProjectMarker(int id, double yaw, double pitch,
84-
const Ptr<aruco::DetectorParameters>& parameters,
84+
const aruco::DetectorParameters& parameters,
8585
const Ptr<aruco::Dictionary>& dictionary)
8686
{
8787
auto marker_corners = std::make_pair(Mat(imgMarkerSize, imgMarkerSize, CV_8UC1, Scalar::all(255)), vector<Point2f>());
@@ -90,7 +90,7 @@ class MarkerPainter
9090

9191
// canonical image
9292
const int markerSizePixels = static_cast<int>(imgMarkerSize/sqrt(2.f));
93-
aruco::drawMarker(dictionary, id, markerSizePixels, img, parameters->markerBorderBits);
93+
aruco::drawMarker(dictionary, id, markerSizePixels, img, parameters.markerBorderBits);
9494

9595
// get rvec and tvec for the perspective
9696
const double distance = 0.1;
@@ -123,7 +123,7 @@ class MarkerPainter
123123
}
124124

125125
std::pair<Mat, map<int, vector<Point2f> > > getProjectMarkersTile(const int numMarkers,
126-
const Ptr<aruco::DetectorParameters>& params,
126+
const aruco::DetectorParameters& params,
127127
const Ptr<aruco::Dictionary>& dictionary)
128128
{
129129
Mat tileImage(imgMarkerSize*numMarkers, imgMarkerSize*numMarkers, CV_8UC1, Scalar::all(255));
@@ -178,18 +178,18 @@ PERF_TEST_P(EstimateAruco, ArucoFirst, ESTIMATE_PARAMS)
178178
{
179179
UseArucoParams testParams = GetParam();
180180
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(aruco::DICT_6X6_250);
181-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
182-
detectorParams->minDistanceToBorder = 1;
183-
detectorParams->markerBorderBits = 1;
184-
detectorParams->cornerRefinementMethod = cv::aruco::CORNER_REFINE_SUBPIX;
181+
aruco::DetectorParameters detectorParams;
182+
detectorParams.minDistanceToBorder = 1;
183+
detectorParams.markerBorderBits = 1;
184+
detectorParams.cornerRefinementMethod = cv::aruco::CORNER_REFINE_SUBPIX;
185185

186186
const int markerSize = 100;
187187
const int numMarkersInRow = 9;
188188
//USE_ARUCO3
189-
detectorParams->useAruco3Detection = get<0>(testParams);
190-
if (detectorParams->useAruco3Detection) {
191-
detectorParams->minSideLengthCanonicalImg = 32;
192-
detectorParams->minMarkerLengthRatioOriginalImg = 0.04f / numMarkersInRow;
189+
detectorParams.useAruco3Detection = get<0>(testParams);
190+
if (detectorParams.useAruco3Detection) {
191+
detectorParams.minSideLengthCanonicalImg = 32;
192+
detectorParams.minMarkerLengthRatioOriginalImg = 0.04f / numMarkersInRow;
193193
}
194194
aruco::ArucoDetector detector(dictionary, detectorParams);
195195
MarkerPainter painter(markerSize);
@@ -212,16 +212,16 @@ PERF_TEST_P(EstimateAruco, ArucoSecond, ESTIMATE_PARAMS)
212212
{
213213
UseArucoParams testParams = GetParam();
214214
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(aruco::DICT_6X6_250);
215-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
216-
detectorParams->minDistanceToBorder = 1;
217-
detectorParams->markerBorderBits = 1;
218-
detectorParams->cornerRefinementMethod = cv::aruco::CORNER_REFINE_SUBPIX;
215+
aruco::DetectorParameters detectorParams;
216+
detectorParams.minDistanceToBorder = 1;
217+
detectorParams.markerBorderBits = 1;
218+
detectorParams.cornerRefinementMethod = cv::aruco::CORNER_REFINE_SUBPIX;
219219

220220
//USE_ARUCO3
221-
detectorParams->useAruco3Detection = get<0>(testParams);
222-
if (detectorParams->useAruco3Detection) {
223-
detectorParams->minSideLengthCanonicalImg = 64;
224-
detectorParams->minMarkerLengthRatioOriginalImg = 0.f;
221+
detectorParams.useAruco3Detection = get<0>(testParams);
222+
if (detectorParams.useAruco3Detection) {
223+
detectorParams.minSideLengthCanonicalImg = 64;
224+
detectorParams.minMarkerLengthRatioOriginalImg = 0.f;
225225
}
226226
aruco::ArucoDetector detector(dictionary, detectorParams);
227227
const int markerSize = 200;
@@ -268,16 +268,16 @@ PERF_TEST_P(EstimateLargeAruco, ArucoFHD, ESTIMATE_FHD_PARAMS)
268268
{
269269
ArucoTestParams testParams = GetParam();
270270
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(aruco::DICT_6X6_250);
271-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
272-
detectorParams->minDistanceToBorder = 1;
273-
detectorParams->markerBorderBits = 1;
274-
detectorParams->cornerRefinementMethod = cv::aruco::CORNER_REFINE_SUBPIX;
271+
aruco::DetectorParameters detectorParams;
272+
detectorParams.minDistanceToBorder = 1;
273+
detectorParams.markerBorderBits = 1;
274+
detectorParams.cornerRefinementMethod = cv::aruco::CORNER_REFINE_SUBPIX;
275275

276276
//USE_ARUCO3
277-
detectorParams->useAruco3Detection = get<0>(testParams).useAruco3Detection;
278-
if (detectorParams->useAruco3Detection) {
279-
detectorParams->minSideLengthCanonicalImg = get<0>(testParams).minSideLengthCanonicalImg;
280-
detectorParams->minMarkerLengthRatioOriginalImg = get<0>(testParams).minMarkerLengthRatioOriginalImg;
277+
detectorParams.useAruco3Detection = get<0>(testParams).useAruco3Detection;
278+
if (detectorParams.useAruco3Detection) {
279+
detectorParams.minSideLengthCanonicalImg = get<0>(testParams).minSideLengthCanonicalImg;
280+
detectorParams.minMarkerLengthRatioOriginalImg = get<0>(testParams).minMarkerLengthRatioOriginalImg;
281281
}
282282
aruco::ArucoDetector detector(dictionary, detectorParams);
283283
const int markerSize = get<1>(testParams).first; // 1440 or 480 or 144

modules/aruco/samples/calibrate_camera.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,10 @@ int main(int argc, char *argv[]) {
102102
if(parser.get<bool>("zt")) calibrationFlags |= CALIB_ZERO_TANGENT_DIST;
103103
if(parser.get<bool>("pc")) calibrationFlags |= CALIB_FIX_PRINCIPAL_POINT;
104104

105-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
105+
aruco::DetectorParameters detectorParams;
106106
if(parser.has("dp")) {
107107
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
108-
bool readOk = detectorParams->readDetectorParameters(fs.root());
108+
bool readOk = detectorParams.readDetectorParameters(fs.root());
109109
if(!readOk) {
110110
cerr << "Invalid detector parameters file" << endl;
111111
return 0;

modules/aruco/samples/detect_board.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,16 +97,16 @@ int main(int argc, char *argv[]) {
9797
}
9898
}
9999

100-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
100+
aruco::DetectorParameters detectorParams;
101101
if(parser.has("dp")) {
102102
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
103-
bool readOk = detectorParams->readDetectorParameters(fs.root());
103+
bool readOk = detectorParams.readDetectorParameters(fs.root());
104104
if(!readOk) {
105105
cerr << "Invalid detector parameters file" << endl;
106106
return 0;
107107
}
108108
}
109-
detectorParams->cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX; // do corner refinement in markers
109+
detectorParams.cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX; // do corner refinement in markers
110110

111111
String video;
112112
if(parser.has("v")) {

modules/aruco/samples/detect_markers.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ int main(int argc, char *argv[]) {
8080
bool estimatePose = parser.has("c");
8181
float markerLength = parser.get<float>("l");
8282

83-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
83+
aruco::DetectorParameters detectorParams;
8484
if(parser.has("dp")) {
8585
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
86-
bool readOk = detectorParams->readDetectorParameters(fs.root());
86+
bool readOk = detectorParams.readDetectorParameters(fs.root());
8787
if(!readOk) {
8888
cerr << "Invalid detector parameters file" << endl;
8989
return 0;
@@ -92,9 +92,9 @@ int main(int argc, char *argv[]) {
9292

9393
if (parser.has("refine")) {
9494
//override cornerRefinementMethod read from config file
95-
detectorParams->cornerRefinementMethod = parser.get<int>("refine");
95+
detectorParams.cornerRefinementMethod = parser.get<int>("refine");
9696
}
97-
std::cout << "Corner refinement method (0: None, 1: Subpixel, 2:contour, 3: AprilTag 2): " << detectorParams->cornerRefinementMethod << std::endl;
97+
std::cout << "Corner refinement method (0: None, 1: Subpixel, 2:contour, 3: AprilTag 2): " << detectorParams.cornerRefinementMethod << std::endl;
9898

9999
int camId = parser.get<int>("ci");
100100

modules/aruco/src/aruco.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ using namespace std;
1414
void detectMarkers(InputArray _image, const Ptr<Dictionary> &_dictionary, OutputArrayOfArrays _corners,
1515
OutputArray _ids, const Ptr<DetectorParameters> &_params,
1616
OutputArrayOfArrays _rejectedImgPoints) {
17-
ArucoDetector detector(_dictionary, _params);
17+
ArucoDetector detector(_dictionary, *_params);
1818
detector.detectMarkers(_image, _corners, _ids, _rejectedImgPoints);
1919
}
2020

@@ -25,7 +25,7 @@ void refineDetectedMarkers(InputArray _image, const Ptr<Board> &_board,
2525
bool checkAllOrders, OutputArray _recoveredIdxs,
2626
const Ptr<DetectorParameters> &_params) {
2727
RefineParameters refineParams(minRepDistance, errorCorrectionRate, checkAllOrders);
28-
ArucoDetector detector(_board->getDictionary(), _params, refineParams);
28+
ArucoDetector detector(_board->getDictionary(), *_params, refineParams);
2929
detector.refineDetectedMarkers(_image, _board, _detectedCorners, _detectedIds, _rejectedCorners, _cameraMatrix,
3030
_distCoeffs, _recoveredIdxs);
3131
}

modules/aruco/src/charuco.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ static int _selectAndRefineChessboardCorners(InputArray _allCorners, InputArray
9090
else
9191
grey = _image.getMat();
9292

93-
const Ptr<DetectorParameters> params = makePtr<aruco::DetectorParameters>(); // use default params for corner refinement
93+
DetectorParameters params; // use default params for corner refinement
9494

9595
//// For each of the charuco corners, apply subpixel refinement using its correspondind winSize
9696
parallel_for_(Range(0, (int)filteredChessboardImgPoints.size()), [&](const Range& range) {
@@ -102,12 +102,12 @@ static int _selectAndRefineChessboardCorners(InputArray _allCorners, InputArray
102102
in.push_back(filteredChessboardImgPoints[i] - Point2f(0.5, 0.5)); // adjust sub-pixel coordinates for cornerSubPix
103103
Size winSize = filteredWinSizes[i];
104104
if (winSize.height == -1 || winSize.width == -1)
105-
winSize = Size(params->cornerRefinementWinSize, params->cornerRefinementWinSize);
105+
winSize = Size(params.cornerRefinementWinSize, params.cornerRefinementWinSize);
106106

107107
cornerSubPix(grey, in, winSize, Size(),
108108
TermCriteria(TermCriteria::MAX_ITER | TermCriteria::EPS,
109-
params->cornerRefinementMaxIterations,
110-
params->cornerRefinementMinAccuracy));
109+
params.cornerRefinementMaxIterations,
110+
params.cornerRefinementMinAccuracy));
111111

112112
filteredChessboardImgPoints[i] = in[0] + Point2f(0.5, 0.5);
113113
}
@@ -428,7 +428,7 @@ void detectCharucoDiamond(InputArray _image, InputArrayOfArrays _markerCorners,
428428
// try to find the rest of markers in the diamond
429429
vector< int > acceptedIdxs;
430430
RefineParameters refineParameters(minRepDistance, -1.f, false);
431-
ArucoDetector detector(dictionary, makePtr<DetectorParameters>(), refineParameters);
431+
ArucoDetector detector(dictionary, DetectorParameters(), refineParameters);
432432
detector.refineDetectedMarkers(grey, _charucoDiamondLayout, currentMarker, currentMarkerId, candidates,
433433
noArray(), noArray(), acceptedIdxs);
434434

modules/aruco/test/test_aruco_tutorial.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ TEST(CV_ArucoTutorial, can_find_gboriginal)
5151

5252
FileStorage fs(dictPath, FileStorage::READ);
5353
dictionary->aruco::Dictionary::readDictionary(fs.root()); // set marker from tutorial_dict.yml
54-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
54+
aruco::DetectorParameters detectorParams;
5555

5656
aruco::ArucoDetector detector(dictionary, detectorParams);
5757

@@ -186,9 +186,9 @@ TEST(CV_ArucoTutorial, can_find_diamondmarkers)
186186

187187
string detectorPath = cvtest::findDataFile("detector_params.yml", false);
188188
fs = FileStorage(detectorPath, FileStorage::READ);
189-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
190-
detectorParams->readDetectorParameters(fs.root());
191-
detectorParams->cornerRefinementMethod = 3;
189+
aruco::DetectorParameters detectorParams;
190+
detectorParams.readDetectorParameters(fs.root());
191+
detectorParams.cornerRefinementMethod = 3;
192192

193193
aruco::ArucoDetector detector(dictionary, detectorParams);
194194

modules/aruco/test/test_boarddetection.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,14 @@ class CV_ArucoBoardPose : public cvtest::BaseTest {
5555
public:
5656
CV_ArucoBoardPose(ArucoAlgParams arucoAlgParams)
5757
{
58-
Ptr<aruco::DetectorParameters> params;
58+
aruco::DetectorParameters params;
5959
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(aruco::DICT_6X6_250);
60-
params = makePtr<aruco::DetectorParameters>();
61-
params->minDistanceToBorder = 3;
60+
params.minDistanceToBorder = 3;
6261
if (arucoAlgParams == ArucoAlgParams::USE_ARUCO3) {
63-
params->useAruco3Detection = true;
64-
params->cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX;
65-
params->minSideLengthCanonicalImg = 16;
66-
params->errorCorrectionRate = 0.8;
62+
params.useAruco3Detection = true;
63+
params.cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX;
64+
params.minSideLengthCanonicalImg = 16;
65+
params.errorCorrectionRate = 0.8;
6766
}
6867
detector = aruco::ArucoDetector(dictionary, params);
6968
}
@@ -99,7 +98,7 @@ void CV_ArucoBoardPose::run(int) {
9998
imgSize, markerBorder);
10099
vector<vector<Point2f> > corners;
101100
vector<int> ids;
102-
detector.getDetectorParameters()->markerBorderBits = markerBorder;
101+
detector.getDetectorParameters().markerBorderBits = markerBorder;
103102
detector.detectMarkers(img, corners, ids);
104103

105104
ASSERT_EQ(ids.size(), gridboard->getIds().size());
@@ -165,11 +164,11 @@ class CV_ArucoRefine : public cvtest::BaseTest {
165164
CV_ArucoRefine(ArucoAlgParams arucoAlgParams)
166165
{
167166
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(aruco::DICT_6X6_250);
168-
Ptr<aruco::DetectorParameters> params = makePtr<aruco::DetectorParameters>();
169-
params->minDistanceToBorder = 3;
170-
params->cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX;
167+
aruco::DetectorParameters params;
168+
params.minDistanceToBorder = 3;
169+
params.cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX;
171170
if (arucoAlgParams == ArucoAlgParams::USE_ARUCO3)
172-
params->useAruco3Detection = true;
171+
params.useAruco3Detection = true;
173172
aruco::RefineParameters refineParams(10.f, 3.f, true);
174173
detector = aruco::ArucoDetector(dictionary, params, refineParams);
175174
}
@@ -208,7 +207,7 @@ void CV_ArucoRefine::run(int) {
208207
// detect markers
209208
vector<vector<Point2f> > corners, rejected;
210209
vector<int> ids;
211-
detector.getDetectorParameters()->markerBorderBits = markerBorder;
210+
detector.getDetectorParameters().markerBorderBits = markerBorder;
212211
detector.detectMarkers(img, corners, ids, rejected);
213212

214213
// remove a marker from detection

modules/aruco/test/test_charucodetection.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ void CV_CharucoDetection::run(int) {
132132
int iter = 0;
133133
Mat cameraMatrix = Mat::eye(3, 3, CV_64FC1);
134134
Size imgSize(500, 500);
135-
Ptr<aruco::DetectorParameters> params = makePtr<aruco::DetectorParameters>();
136-
params->minDistanceToBorder = 3;
135+
aruco::DetectorParameters params;
136+
params.minDistanceToBorder = 3;
137137
aruco::ArucoDetector detector(aruco::getPredefinedDictionary(aruco::DICT_6X6_250), params);
138138
Ptr<aruco::CharucoBoard> board = aruco::CharucoBoard::create(4, 4, 0.03f, 0.015f, detector.getDictionary());
139139

@@ -160,7 +160,7 @@ void CV_CharucoDetection::run(int) {
160160
vector<vector<Point2f> > corners;
161161
vector<int> ids;
162162

163-
detector.getDetectorParameters()->markerBorderBits = markerBorder;
163+
detector.getDetectorParameters().markerBorderBits = markerBorder;
164164
detector.detectMarkers(img, corners, ids);
165165

166166
if(ids.size() == 0) {
@@ -238,8 +238,8 @@ void CV_CharucoPoseEstimation::run(int) {
238238
int iter = 0;
239239
Mat cameraMatrix = Mat::eye(3, 3, CV_64FC1);
240240
Size imgSize(500, 500);
241-
Ptr<aruco::DetectorParameters> params = makePtr<aruco::DetectorParameters>();
242-
params->minDistanceToBorder = 3;
241+
aruco::DetectorParameters params;
242+
params.minDistanceToBorder = 3;
243243
aruco::ArucoDetector detector(aruco::getPredefinedDictionary(aruco::DICT_6X6_250), params);
244244
Ptr<aruco::CharucoBoard> board = aruco::CharucoBoard::create(4, 4, 0.03f, 0.015f, detector.getDictionary());
245245

@@ -264,7 +264,7 @@ void CV_CharucoPoseEstimation::run(int) {
264264
// detect markers
265265
vector< vector< Point2f > > corners;
266266
vector< int > ids;
267-
detector.getDetectorParameters()->markerBorderBits = markerBorder;
267+
detector.getDetectorParameters().markerBorderBits = markerBorder;
268268
detector.detectMarkers(img, corners, ids);
269269

270270
ASSERT_EQ(ids.size(), board->getIds().size());
@@ -348,8 +348,8 @@ void CV_CharucoDiamondDetection::run(int) {
348348
int iter = 0;
349349
Mat cameraMatrix = Mat::eye(3, 3, CV_64FC1);
350350
Size imgSize(500, 500);
351-
Ptr<aruco::DetectorParameters> params = makePtr<aruco::DetectorParameters>();
352-
params->minDistanceToBorder = 0;
351+
aruco::DetectorParameters params ;
352+
params.minDistanceToBorder = 0;
353353
aruco::ArucoDetector detector(aruco::getPredefinedDictionary(aruco::DICT_6X6_250), params);
354354
float squareLength = 0.03f;
355355
float markerLength = 0.015f;
@@ -380,7 +380,7 @@ void CV_CharucoDiamondDetection::run(int) {
380380
// detect markers
381381
vector< vector< Point2f > > corners;
382382
vector< int > ids;
383-
detector.getDetectorParameters()->markerBorderBits = markerBorder;
383+
detector.getDetectorParameters().markerBorderBits = markerBorder;
384384
detector.detectMarkers(img, corners, ids);
385385

386386
if(ids.size() != 4) {
@@ -643,8 +643,8 @@ TEST(Charuco, testBoardSubpixelCoords)
643643
board->draw(Size(res.width, res.height), gray, 150);
644644
cv::GaussianBlur(gray, gray, Size(5, 5), 1.0);
645645

646-
Ptr<aruco::DetectorParameters> params = makePtr<aruco::DetectorParameters>();
647-
params->cornerRefinementMethod = cv::aruco::CORNER_REFINE_APRILTAG;
646+
aruco::DetectorParameters params;
647+
params.cornerRefinementMethod = cv::aruco::CORNER_REFINE_APRILTAG;
648648

649649
aruco::ArucoDetector detector(dict, params);
650650

@@ -674,9 +674,9 @@ TEST(Charuco, issue_14014)
674674
string imgPath = cvtest::findDataFile("aruco/recover.png");
675675
Mat img = imread(imgPath);
676676

677-
Ptr<aruco::DetectorParameters> detectorParams = makePtr<aruco::DetectorParameters>();
678-
detectorParams->cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX;
679-
detectorParams->cornerRefinementMinAccuracy = 0.01;
677+
aruco::DetectorParameters detectorParams;
678+
detectorParams.cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX;
679+
detectorParams.cornerRefinementMinAccuracy = 0.01;
680680
aruco::ArucoDetector detector(aruco::getPredefinedDictionary(aruco::DICT_7X7_250), detectorParams);
681681
Ptr<aruco::CharucoBoard> board = aruco::CharucoBoard::create(8, 5, 0.03455f, 0.02164f, detector.getDictionary());
682682

0 commit comments

Comments
 (0)