@@ -376,6 +376,35 @@ TEST(Objdetect_QRCode_Big, regression) {
376
376
ASSERT_EQ (expect_msg, decoded_info[0 ]);
377
377
}
378
378
379
+ TEST (Objdetect_QRCode_Tiny, regression) {
380
+ string path_detect_prototxt, path_detect_caffemodel, path_sr_prototxt, path_sr_caffemodel;
381
+ string model_version = " _2021-01" ;
382
+ path_detect_prototxt = findDataFile (" dnn/wechat" +model_version+" /detect.prototxt" , false );
383
+ path_detect_caffemodel = findDataFile (" dnn/wechat" +model_version+" /detect.caffemodel" , false );
384
+ path_sr_prototxt = findDataFile (" dnn/wechat" +model_version+" /sr.prototxt" , false );
385
+ path_sr_caffemodel = findDataFile (" dnn/wechat" +model_version+" /sr.caffemodel" , false );
386
+
387
+ auto detector = wechat_qrcode::WeChatQRCode (path_detect_prototxt, path_detect_caffemodel, path_sr_prototxt,
388
+ path_sr_caffemodel);
389
+
390
+ const cv::String expect_msg = " OpenCV" ;
391
+ QRCodeEncoder::Params params;
392
+ params.version = 4 ; // 33x33
393
+ Ptr<QRCodeEncoder> qrcode_enc = cv::QRCodeEncoder::create (params);
394
+ Mat qrImage;
395
+ qrcode_enc->encode (expect_msg, qrImage);
396
+ Mat tinyImage (80 , 80 , CV_8UC1);
397
+ const int pixInBlob = 2 ;
398
+ Size qrSize = Size ((21 +(params.version -1 )*4 )*pixInBlob,(21 +(params.version -1 )*4 )*pixInBlob);
399
+ Mat roiImage = tinyImage (Rect ((tinyImage.cols - qrSize.width )/2 , (tinyImage.rows - qrSize.height )/2 ,
400
+ qrSize.width , qrSize.height ));
401
+ cv::resize (qrImage, roiImage, qrSize, 1 ., 1 ., INTER_NEAREST);
402
+
403
+ vector<Mat> points;
404
+ auto decoded_info = detector.detectAndDecode (tinyImage, points);
405
+ ASSERT_EQ (1ull , decoded_info.size ());
406
+ ASSERT_EQ (expect_msg, decoded_info[0 ]);
407
+ }
379
408
380
409
} // namespace
381
410
} // namespace opencv_test
0 commit comments