|
6 | 6 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
|
7 | 7 |
|
8 | 8 | #include "test_precomp.hpp"
|
| 9 | +#include "opencv2/objdetect.hpp" |
9 | 10 |
|
10 | 11 | namespace opencv_test {
|
11 | 12 | namespace {
|
@@ -289,5 +290,37 @@ INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Monitor, testing::ValuesIn(qrcode
|
289 | 290 | INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Curved, testing::ValuesIn(qrcode_images_curved));
|
290 | 291 | // INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Multi, testing::ValuesIn(qrcode_images_multiple));
|
291 | 292 |
|
| 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 | + |
292 | 325 | } // namespace
|
293 | 326 | } // namespace opencv_test
|
0 commit comments