Valgrind issues fix in QRCode detector.
authorAlexander Smorkalov <alexander.smorkalov@xperience.ai>
Thu, 22 Dec 2022 14:29:22 +0000 (17:29 +0300)
committerAlexander Smorkalov <alexander.smorkalov@xperience.ai>
Fri, 23 Dec 2022 07:50:31 +0000 (10:50 +0300)
modules/objdetect/src/qrcode.cpp

index a62b90b..41c604a 100644 (file)
@@ -2340,9 +2340,8 @@ static inline std::pair<int, int> matchPatternPoints(const vector<Point> &finder
 double QRDecode::getNumModules() {
     vector<vector<Point>> finderPatterns;
     double numModulesX = 0., numModulesY = 0.;
-    bool flag = findPatternsVerticesPoints(finderPatterns);
-    if (flag) {
-        double pattern_distance[4];
+    if (findPatternsVerticesPoints(finderPatterns)) {
+        double pattern_distance[4] = {0.,0.,0.,0.};
         for (auto& pattern : finderPatterns) {
             auto indexes = matchPatternPoints(pattern, original_points);
             if (indexes == std::make_pair(-1, -1))
@@ -2558,8 +2557,9 @@ bool QRDecode::versionDefinition()
     bool useFinderPattern = false;
     const double thresholdFinderPattern = 0.2;
     const double roundingError = abs(numModulesByFinderPattern - cvRound(numModulesByFinderPattern));
-    if (cvRound(versionByFinderPattern) >= 1 && versionByFinderPattern <= 6 && transition_x != transition_y) {
-        if (roundingError < thresholdFinderPattern)
+
+    if (cvRound(versionByFinderPattern) >= 1 && versionByFinderPattern <= 6. &&
+        transition_x != transition_y && roundingError < thresholdFinderPattern) {
             useFinderPattern = true;
     }
 
@@ -2775,7 +2775,12 @@ bool QRDecode::curvedDecodingProcess()
 #endif
 }
 
-QRDecode::QRDecode(bool _useAlignmentMarkers): useAlignmentMarkers(_useAlignmentMarkers) {}
+QRDecode::QRDecode(bool _useAlignmentMarkers):
+    useAlignmentMarkers(_useAlignmentMarkers),
+    version(0),
+    version_size(0),
+    test_perspective_size(0.f)
+    {}
 
 std::string QRCodeDetector::decode(InputArray in, InputArray points,
                                    OutputArray straight_qrcode)