Ocean
Loading...
Searching...
No Matches
TestQRCodeDetector2D.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#pragma once
9
11
13
15
16namespace Ocean
17{
18
19namespace Test
20{
21
22namespace TestCV
23{
24
25namespace TestDetector
26{
27
28namespace TestQRCodes
29{
30
31/**
32 * This class implements a test for the QR code detector.
33 * @ingroup testcvdetectorqrcodes
34 */
35class OCEAN_TEST_CV_DETECTOR_QRCODES_EXPORT TestQRCodeDetector2D : protected CV::Detector::QRCodes::QRCodeDetector2D
36{
37 public:
38
39 /**
40 * Invokes all test for the QR code detector.
41 * @param testDuration Number of seconds for each test, with range (0, infinity)
42 * @param worker A worker object
43 * @return True, if succeeded
44 */
45 static bool test(const double testDuration, Worker& worker);
46
47 /**
48 * Applies a stress test with random input data just ensuring that the detector does not crash.
49 * @param testDuration Number of seconds for each test, with range (0, infinity)
50 * @param worker A worker object
51 * @return True, if succeeded
52 */
53 static bool testStressTest(const double testDuration, Worker& worker);
54
55 /**
56 * Test for the detection of QR codes using synthetic test images with small dimensions
57 * @param gaussianFilterSize Size of a Gaussian filter that is applied to the synthesized data; no filter is applied for the value 0, range: [0, infinity), must be an odd value
58 * @param testDuration Number of seconds for each test, with range (0, infinity)
59 * @param worker A worker object
60 * @return True, if succeeded
61 */
62 static bool testDetectQRCodesSmallImageSyntheticData(const unsigned int gaussianFilterSize, const double testDuration, Worker& worker);
63
64 /**
65 * Test for the detection of QR codes using synthetic test images with large dimensions
66 * @param gaussianFilterSize Size of a Gaussian filter that is applied to the synthesized data; no filter is applied for the value 0, range: [0, infinity), must be an odd value
67 * @param testDuration Number of seconds for each test, with range (0, infinity)
68 * @param worker A worker object
69 * @return True, if succeeded
70 */
71 static bool testDetectQRCodesLargeImageSyntheticData(const unsigned int gaussianFilterSize, const double testDuration, Worker& worker);
72
73 protected:
74
75 /**
76 * Test for the detection of QR codes using synthetic test images
77 * @param gaussianFilterSize Size of a Gaussian filter that is applied to the synthesized data; no filter is applied for the value 0, range: [0, infinity), must be an odd value
78 * @param testDuration Number of seconds for each test, with range (0, infinity)
79 * @param worker A worker object
80 * @param testLable Label specified by caller test function, used in log messages and within generated file names. Must be alphanumeric.
81 * @param detectionValidationThreshold Proportion of QR code detection attempts that must succeed for the test to pass, range: [0, 1]
82 * @param groundtruthComparisonValidationThreshold Proportion of QR code detection attempts that must succeed with exact match to groundtruth for the test to pass, range: [0, detectionValidationThreshold]
83 * @param moduleSizePixelsMin Minimum module size in pixels, range: [1, infinity)
84 * @param moduleSizePixelsMax Maximum module size in pixels, range: [moduleSizePixelsMin, infinity)
85 * @param imageDimPixelsMin Hard limit on how small width or height of generated image can be, in terms of pixels, range: [0, infinity)
86 * @param imageDimPixelsMax Soft limit on how large width or height of generated image can be, in terms of pixels, range: [0, infinity)
87 * @return True, if succeeded
88 * @remark Images generated may have width or height greater than `imageDimPixelsMax` if the image needs to be larger to fit the QR code generated due to other parameter values
89 */
90 static bool testDetectQRCodesSyntheticData_Internal(const unsigned int gaussianFilterSize, const double testDuration, Worker& worker, const std::string& testLabel, const double detectionValidationThreshold, const double groundtruthComparisonValidationThreshold, const unsigned int moduleSizePixelsMin = 6u, const unsigned int moduleSizePixelsMax = 8u, const unsigned int imageDimPixelsMin = 0u, const unsigned int imageDimPixelsMax = 720u);
91};
92
93} // namespace TestQRCodes
94
95} // namespace TestDetector
96
97} // namespace TestCV
98
99} // namespace Test
100
101} // namespace Test
This class implements a detector for QR Codes.
Definition QRCodeDetector2D.h:42
This class implements a test for the QR code detector.
Definition TestQRCodeDetector2D.h:36
static bool testDetectQRCodesSyntheticData_Internal(const unsigned int gaussianFilterSize, const double testDuration, Worker &worker, const std::string &testLabel, const double detectionValidationThreshold, const double groundtruthComparisonValidationThreshold, const unsigned int moduleSizePixelsMin=6u, const unsigned int moduleSizePixelsMax=8u, const unsigned int imageDimPixelsMin=0u, const unsigned int imageDimPixelsMax=720u)
Test for the detection of QR codes using synthetic test images.
static bool testDetectQRCodesSmallImageSyntheticData(const unsigned int gaussianFilterSize, const double testDuration, Worker &worker)
Test for the detection of QR codes using synthetic test images with small dimensions.
static bool test(const double testDuration, Worker &worker)
Invokes all test for the QR code detector.
static bool testStressTest(const double testDuration, Worker &worker)
Applies a stress test with random input data just ensuring that the detector does not crash.
static bool testDetectQRCodesLargeImageSyntheticData(const unsigned int gaussianFilterSize, const double testDuration, Worker &worker)
Test for the detection of QR codes using synthetic test images with large dimensions.
This class implements a worker able to distribute function calls over different threads.
Definition Worker.h:33
The namespace covering the entire Ocean framework.
Definition Accessor.h:15