Fix data corruption in WeChatQRCode::impl::decode

(it may lead to incorrect results if multiple QR found at image)
pull/3701/head
Evgeny Latkin 1 year ago
parent b42682b4d1
commit 35f0b6ecc3
  1. 8
      modules/wechat_qrcode/src/wechat_qrcode.cpp

@ -155,9 +155,11 @@ vector<string> WeChatQRCode::Impl::decode(const Mat& img, vector<Mat>& candidate
if (use_nn_detector_) if (use_nn_detector_)
points_qr = aligner.warpBack(points_qr); points_qr = aligner.warpBack(points_qr);
auto point_to_save = Mat(4, 2, CV_32FC1);
for (int j = 0; j < 4; ++j) { for (int j = 0; j < 4; ++j) {
point.at<float>(j, 0) = points_qr[j].x; point_to_save.at<float>(j, 0) = points_qr[j].x;
point.at<float>(j, 1) = points_qr[j].y; point_to_save.at<float>(j, 1) = points_qr[j].y;
} }
// try to find duplicate qr corners // try to find duplicate qr corners
bool isDuplicate = false; bool isDuplicate = false;
@ -175,7 +177,7 @@ vector<string> WeChatQRCode::Impl::decode(const Mat& img, vector<Mat>& candidate
} }
} }
if (isDuplicate == false) { if (isDuplicate == false) {
points.push_back(point); points.push_back(point_to_save);
check_points.push_back(points_qr); check_points.push_back(points_qr);
} }
else { else {

Loading…
Cancel
Save