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