@@ -15,40 +15,41 @@ namespace aruco {
15
15
16
16
using namespace std ;
17
17
18
- bool DetectorParameters::readWrite (const Ptr<FileNode>& readNode, const Ptr<FileStorage>& writeStorage) {
18
+ static inline bool readWrite (DetectorParameters ¶ms, const Ptr<FileNode>& readNode = nullptr ,
19
+ const Ptr<FileStorage>& writeStorage = nullptr ) {
19
20
CV_Assert (!readNode.empty () || !writeStorage.empty ());
20
21
bool check = false ;
21
22
22
- check |= readWriteParameter (" adaptiveThreshWinSizeMin" , this -> adaptiveThreshWinSizeMin , readNode, writeStorage);
23
- check |= readWriteParameter (" adaptiveThreshWinSizeMax" , this -> adaptiveThreshWinSizeMax , readNode, writeStorage);
24
- check |= readWriteParameter (" adaptiveThreshWinSizeStep" , this -> adaptiveThreshWinSizeStep , readNode, writeStorage);
25
- check |= readWriteParameter (" adaptiveThreshConstant" , this -> adaptiveThreshConstant , readNode, writeStorage);
26
- check |= readWriteParameter (" minMarkerPerimeterRate" , this -> minMarkerPerimeterRate , readNode, writeStorage);
27
- check |= readWriteParameter (" maxMarkerPerimeterRate" , this -> maxMarkerPerimeterRate , readNode, writeStorage);
28
- check |= readWriteParameter (" polygonalApproxAccuracyRate" , this -> polygonalApproxAccuracyRate ,
23
+ check |= readWriteParameter (" adaptiveThreshWinSizeMin" , params. adaptiveThreshWinSizeMin , readNode, writeStorage);
24
+ check |= readWriteParameter (" adaptiveThreshWinSizeMax" , params. adaptiveThreshWinSizeMax , readNode, writeStorage);
25
+ check |= readWriteParameter (" adaptiveThreshWinSizeStep" , params. adaptiveThreshWinSizeStep , readNode, writeStorage);
26
+ check |= readWriteParameter (" adaptiveThreshConstant" , params. adaptiveThreshConstant , readNode, writeStorage);
27
+ check |= readWriteParameter (" minMarkerPerimeterRate" , params. minMarkerPerimeterRate , readNode, writeStorage);
28
+ check |= readWriteParameter (" maxMarkerPerimeterRate" , params. maxMarkerPerimeterRate , readNode, writeStorage);
29
+ check |= readWriteParameter (" polygonalApproxAccuracyRate" , params. polygonalApproxAccuracyRate ,
29
30
readNode, writeStorage);
30
- check |= readWriteParameter (" minCornerDistanceRate" , this -> minCornerDistanceRate , readNode, writeStorage);
31
- check |= readWriteParameter (" minDistanceToBorder" , this -> minDistanceToBorder , readNode, writeStorage);
32
- check |= readWriteParameter (" minMarkerDistanceRate" , this -> minMarkerDistanceRate , readNode, writeStorage);
33
- check |= readWriteParameter (" cornerRefinementMethod" , this -> cornerRefinementMethod , readNode, writeStorage);
34
- check |= readWriteParameter (" cornerRefinementWinSize" , this -> cornerRefinementWinSize , readNode, writeStorage);
35
- check |= readWriteParameter (" cornerRefinementMaxIterations" , this -> cornerRefinementMaxIterations ,
31
+ check |= readWriteParameter (" minCornerDistanceRate" , params. minCornerDistanceRate , readNode, writeStorage);
32
+ check |= readWriteParameter (" minDistanceToBorder" , params. minDistanceToBorder , readNode, writeStorage);
33
+ check |= readWriteParameter (" minMarkerDistanceRate" , params. minMarkerDistanceRate , readNode, writeStorage);
34
+ check |= readWriteParameter (" cornerRefinementMethod" , params. cornerRefinementMethod , readNode, writeStorage);
35
+ check |= readWriteParameter (" cornerRefinementWinSize" , params. cornerRefinementWinSize , readNode, writeStorage);
36
+ check |= readWriteParameter (" cornerRefinementMaxIterations" , params. cornerRefinementMaxIterations ,
36
37
readNode, writeStorage);
37
- check |= readWriteParameter (" cornerRefinementMinAccuracy" , this -> cornerRefinementMinAccuracy ,
38
+ check |= readWriteParameter (" cornerRefinementMinAccuracy" , params. cornerRefinementMinAccuracy ,
38
39
readNode, writeStorage);
39
- check |= readWriteParameter (" markerBorderBits" , this -> markerBorderBits , readNode, writeStorage);
40
- check |= readWriteParameter (" perspectiveRemovePixelPerCell" , this -> perspectiveRemovePixelPerCell ,
40
+ check |= readWriteParameter (" markerBorderBits" , params. markerBorderBits , readNode, writeStorage);
41
+ check |= readWriteParameter (" perspectiveRemovePixelPerCell" , params. perspectiveRemovePixelPerCell ,
41
42
readNode, writeStorage);
42
- check |= readWriteParameter (" perspectiveRemoveIgnoredMarginPerCell" , this -> perspectiveRemoveIgnoredMarginPerCell ,
43
+ check |= readWriteParameter (" perspectiveRemoveIgnoredMarginPerCell" , params. perspectiveRemoveIgnoredMarginPerCell ,
43
44
readNode, writeStorage);
44
- check |= readWriteParameter (" maxErroneousBitsInBorderRate" , this -> maxErroneousBitsInBorderRate ,
45
+ check |= readWriteParameter (" maxErroneousBitsInBorderRate" , params. maxErroneousBitsInBorderRate ,
45
46
readNode, writeStorage);
46
- check |= readWriteParameter (" minOtsuStdDev" , this -> minOtsuStdDev , readNode, writeStorage);
47
- check |= readWriteParameter (" errorCorrectionRate" , this -> errorCorrectionRate , readNode, writeStorage);
47
+ check |= readWriteParameter (" minOtsuStdDev" , params. minOtsuStdDev , readNode, writeStorage);
48
+ check |= readWriteParameter (" errorCorrectionRate" , params. errorCorrectionRate , readNode, writeStorage);
48
49
// new aruco 3 functionality
49
- check |= readWriteParameter (" useAruco3Detection" , this -> useAruco3Detection , readNode, writeStorage);
50
- check |= readWriteParameter (" minSideLengthCanonicalImg" , this -> minSideLengthCanonicalImg , readNode, writeStorage);
51
- check |= readWriteParameter (" minMarkerLengthRatioOriginalImg" , this -> minMarkerLengthRatioOriginalImg ,
50
+ check |= readWriteParameter (" useAruco3Detection" , params. useAruco3Detection , readNode, writeStorage);
51
+ check |= readWriteParameter (" minSideLengthCanonicalImg" , params. minSideLengthCanonicalImg , readNode, writeStorage);
52
+ check |= readWriteParameter (" minMarkerLengthRatioOriginalImg" , params. minMarkerLengthRatioOriginalImg ,
52
53
readNode, writeStorage);
53
54
return check;
54
55
}
@@ -57,14 +58,14 @@ bool DetectorParameters::readDetectorParameters(const FileNode& fn) {
57
58
if (fn.empty ())
58
59
return false ;
59
60
Ptr<FileNode> pfn = makePtr<FileNode>(fn);
60
- return readWrite (pfn);
61
+ return readWrite (* this , pfn);
61
62
}
62
63
63
64
bool DetectorParameters::writeDetectorParameters (const Ptr<FileStorage>& fs)
64
65
{
65
66
if (fs.empty () && !fs->isOpened ())
66
67
return false ;
67
- return readWrite (nullptr , fs);
68
+ return readWrite (* this , nullptr , fs);
68
69
}
69
70
70
71
static inline bool readWrite (RefineParameters& refineParameters, const Ptr<FileNode>& readNode,
0 commit comments