Skip to content

Commit 921cb5e

Browse files
or/
1 parent ee9ef17 commit 921cb5e

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

modules/wechat_qrcode/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set(the_description "WeChat QR code Detector")
2-
ocv_define_module(wechat_qrcode opencv_core opencv_imgproc opencv_dnn WRAP java objc python js)
2+
ocv_define_module(wechat_qrcode opencv_core opencv_imgproc opencv_objdetect opencv_dnn WRAP java objc python js)
33

44
# iconv support isn't automatic on some systems
55
if(CMAKE_VERSION VERSION_GREATER "3.11")

modules/wechat_qrcode/test/test_qrcode.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
77

88
#include "test_precomp.hpp"
9+
#include "opencv2/objdetect.hpp"
910

1011
namespace opencv_test {
1112
namespace {
@@ -289,5 +290,37 @@ INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Monitor, testing::ValuesIn(qrcode
289290
INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Curved, testing::ValuesIn(qrcode_images_curved));
290291
// INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Multi, testing::ValuesIn(qrcode_images_multiple));
291292

293+
TEST(Objdetect_QRCode_Big, regression) {
294+
string path_detect_prototxt, path_detect_caffemodel, path_sr_prototxt, path_sr_caffemodel;
295+
string model_version = "_2021-01";
296+
path_detect_prototxt = findDataFile("../dnn/wechat"+model_version+"/detect.prototxt", false);
297+
path_detect_caffemodel = findDataFile("../dnn/wechat"+model_version+"/detect.caffemodel", false);
298+
path_sr_prototxt = findDataFile("../dnn/wechat"+model_version+"/sr.prototxt", false);
299+
path_sr_caffemodel = findDataFile("../dnn/wechat"+model_version+"/sr.caffemodel", false);
300+
301+
auto detector = wechat_qrcode::WeChatQRCode(path_detect_prototxt, path_detect_caffemodel, path_sr_prototxt,
302+
path_sr_caffemodel);
303+
304+
const cv::String expect_msg = "OpenCV";
305+
QRCodeEncoder::Params params;
306+
params.version = 4; // 33x33
307+
Ptr<QRCodeEncoder> qrcode_enc = cv::QRCodeEncoder::create(params);
308+
Mat qrImage;
309+
qrcode_enc->encode(expect_msg, qrImage);
310+
Mat largeImage(4032, 3024, CV_8UC1);
311+
const int pixInBlob = 4;
312+
Size qrSize = Size((21+(params.version-1)*4)*pixInBlob,(21+(params.version-1)*4)*pixInBlob);
313+
Mat roiImage = largeImage(Rect((largeImage.cols - qrSize.width)/2, (largeImage.rows - qrSize.height)/2,
314+
qrSize.width, qrSize.height));
315+
cv::resize(qrImage, roiImage, qrSize, 1., 1., INTER_NEAREST);
316+
317+
vector<Mat> points;
318+
detector.setScaleFactor(0.25f);
319+
auto decoded_info = detector.detectAndDecode(largeImage, points);
320+
ASSERT_EQ(1ull, decoded_info.size());
321+
ASSERT_EQ(expect_msg, decoded_info[0]);
322+
}
323+
324+
292325
} // namespace
293326
} // namespace opencv_test

0 commit comments

Comments
 (0)