diff --git a/modules/wechat_qrcode/src/wechat_qrcode.cpp b/modules/wechat_qrcode/src/wechat_qrcode.cpp index f4bec7c2b..64aad7361 100644 --- a/modules/wechat_qrcode/src/wechat_qrcode.cpp +++ b/modules/wechat_qrcode/src/wechat_qrcode.cpp @@ -35,7 +35,8 @@ public: * @param points succussfully decoded qrcode with bounding box points. * @return vector */ - std::vector decode(const Mat& img, std::vector& candidate_points, + std::vector decode(const Mat& img, + const std::vector& candidate_points, std::vector& points); int applyDetector(const Mat& img, std::vector& points); Mat cropObj(const Mat& img, const Mat& point, Align& aligner); @@ -123,13 +124,14 @@ float WeChatQRCode::getScaleFactor() { return p->scaleFactor; }; -vector WeChatQRCode::Impl::decode(const Mat& img, vector& candidate_points, +vector WeChatQRCode::Impl::decode(const Mat& img, + const vector& candidate_points, vector& points) { if (candidate_points.size() == 0) { return vector(); } vector decode_results; - for (auto& point : candidate_points) { + for (const auto& point : candidate_points) { Mat cropped_img; Align aligner; if (use_nn_detector_) { @@ -155,9 +157,11 @@ vector WeChatQRCode::Impl::decode(const Mat& img, vector& candidate if (use_nn_detector_) points_qr = aligner.warpBack(points_qr); + + auto point_to_save = Mat(4, 2, CV_32FC1); for (int j = 0; j < 4; ++j) { - point.at(j, 0) = points_qr[j].x; - point.at(j, 1) = points_qr[j].y; + point_to_save.at(j, 0) = points_qr[j].x; + point_to_save.at(j, 1) = points_qr[j].y; } // try to find duplicate qr corners bool isDuplicate = false; @@ -175,7 +179,7 @@ vector WeChatQRCode::Impl::decode(const Mat& img, vector& candidate } } if (isDuplicate == false) { - points.push_back(point); + points.push_back(point_to_save); check_points.push_back(points_qr); } else { @@ -244,4 +248,4 @@ vector WeChatQRCode::Impl::getScaleList(const int width, const int height return {0.5, 1.0}; } } // namespace wechat_qrcode -} // namespace cv \ No newline at end of file +} // namespace cv