@@ -481,6 +481,26 @@ INSTANTIATE_TEST_CASE_P(/**/, Objdetect_QRCode_Close, testing::ValuesIn(qrcode_i
481481INSTANTIATE_TEST_CASE_P (/* */ , Objdetect_QRCode_Monitor, testing::ValuesIn(qrcode_images_monitor));
482482INSTANTIATE_TEST_CASE_P (/* */ , Objdetect_QRCode_Multi, testing::ValuesIn(qrcode_images_multiple));
483483
484+ TEST (Objdetect_QRCode_decodeMulti, decode_regression_16491)
485+ {
486+ #ifdef HAVE_QUIRC
487+ Mat zero_image = Mat::zeros (256 , 256 , CV_8UC1);
488+ Point corners_[] = {Point (16 , 16 ), Point (128 , 16 ), Point (128 , 128 ), Point (16 , 128 ),
489+ Point (16 , 16 ), Point (128 , 16 ), Point (128 , 128 ), Point (16 , 128 )};
490+ std::vector<Point> vec_corners;
491+ int array_size = 8 ;
492+ vec_corners.assign (corners_, corners_ + array_size);
493+ std::vector<cv::String> decoded_info;
494+ std::vector<Mat> straight_barcode;
495+ QRCodeDetector vec_qrcode;
496+ EXPECT_NO_THROW (vec_qrcode.decodeMulti (zero_image, vec_corners, decoded_info, straight_barcode));
497+
498+ Mat mat_corners (2 , 4 , CV_32SC2, (void *)&vec_corners[0 ]);
499+ QRCodeDetector mat_qrcode;
500+ EXPECT_NO_THROW (mat_qrcode.decodeMulti (zero_image, mat_corners, decoded_info, straight_barcode));
501+ #endif
502+ }
503+
484504TEST (Objdetect_QRCode_basic, not_found_qrcode)
485505{
486506 std::vector<Point> corners;
0 commit comments