209 static constexpr int deltaThreshold = 30;
227 inline int history1();
233 inline int history2();
239 inline int history3();
245 inline int history4();
251 inline int history5();
258 inline void push(
const int newDelta);
268 int deltas_[5] = { 0, 0, 0, 0, 0 };
284 static FinderPatterns detectFinderPatterns(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int minimumDistance = 10u,
const unsigned int paddingElements = 0u,
Worker* worker =
nullptr,
const bool detectInvertedReflectance =
false);
310 static void detectFinderPatternsSubset(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
FinderPatterns* finderPatterns,
Lock* multiThreadLock,
const unsigned int paddingElements,
const unsigned int firstRow,
const unsigned int numberRows,
const bool detectInvertedReflectance);
322 static void detectFinderPatternInRow(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int y,
FinderPatterns& finderPatterns,
const unsigned int paddingElements,
const bool isNormalReflectance);
359 static void addFinderPatternCandidateInRow(
const uint8_t*
const yFrame,
const uint8_t*
const yRow,
const unsigned int width,
const unsigned int height,
const unsigned int y,
const unsigned int paddingElements,
const unsigned int segment1StartForeground,
const unsigned int segment3StartForeground,
const unsigned int segment4StartBackground,
const unsigned int segment1Size,
const unsigned int segment2Size,
const unsigned int segment3Size,
const unsigned int segment4Size,
const unsigned int segment5Size,
const unsigned int foregroundSquareSegmentMin,
const unsigned int foregroundSquareSegmentMax,
const unsigned int backgroundSquareSegmentMin,
const unsigned int backgroundSquareSegmentMax,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
const bool isNormalReflectance,
FinderPatterns& finderPatterns);
414 static bool checkFinderPatternInNeighborhood(
const uint8_t*
const yFrame,
const unsigned width,
const unsigned height,
const unsigned int paddingElements,
const unsigned int xCenter,
const unsigned int yCenter,
const unsigned int threshold,
const unsigned int blackSquareSegmentMin,
const unsigned int blackSquareSegmentMax,
const unsigned int whiteSquareSegmentMin,
const unsigned int whiteSquareSegmentMax,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
const bool isNormalReflectance,
Scalar& symmetryScore,
Vector2* edgePoints);
437 static bool checkFinderPatternDirectional(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int paddingElements,
const unsigned int xCenter,
const unsigned int yCenter,
const Scalar angle,
const unsigned int threshold,
const unsigned int blackSquareSegmentMin,
const unsigned int blackSquareSegmentMax,
const unsigned int whiteSquareSegmentMin,
const unsigned int whiteSquareSegmentMax,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
const bool isNormalReflectance,
Vector2& topBorder,
Vector2& bottomBorder);
442 static bool checkCenterSegmentDirectional(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int paddingElements,
const unsigned int xCenter,
const unsigned int yCenter,
const unsigned int threshold,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
TransitionDetector::FindNextPixelFunc findNextBackgroundPixel,
Bresenham& bresenhamTop,
Bresenham& bresenhamBottom,
unsigned int& topColumns,
unsigned int& topRows,
unsigned int& bottomColumns,
unsigned int& bottomRows,
VectorT2<unsigned int>& topIn,
VectorT2<unsigned int>& topOut,
VectorT2<unsigned int>& bottomIn,
VectorT2<unsigned int>& bottomOut);
447 static bool checkSegmentDirectional(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int paddingElements,
const unsigned int threshold,
const unsigned int segmentMin,
const unsigned int segmentMax,
TransitionDetector::FindNextPixelFunc findNextPixel,
Bresenham& bresenhamTop,
Bresenham& bresenhamBottom,
unsigned int& topColumns,
unsigned int& topRows,
unsigned int& bottomColumns,
unsigned int& bottomRows,
VectorT2<unsigned int>& topIn,
VectorT2<unsigned int>& topOut,
VectorT2<unsigned int>& bottomIn,
VectorT2<unsigned int>& bottomOut);
455 static inline bool isTransitionToBlack(
const uint8_t* pixel,
TransitionHistory& history);
463 static inline bool isTransitionToWhite(
const uint8_t* pixel,
TransitionHistory& history);
479 static inline unsigned int determineThreshold(
const uint8_t* yPosition,
const unsigned int segmentSize1,
const unsigned int segmentSize2,
const unsigned int segmentSize3,
const unsigned int segmentSize4,
const unsigned int segmentSize5,
const bool isNormalReflectance);
509 centerIntensity_(centerIntensity),
510 grayThreshold_(grayThreshold),
511 symmetryScore_(symmetryScore),
512 cornersKnown_(false),
514 moduleSize_(length /
Scalar(7))
528 centerIntensity_(centerIntensity),
529 grayThreshold_(grayThreshold),
530 symmetryScore_(symmetryScore),
532 orientation_(orientation),
533 moduleSize_(moduleSize)
538 ocean_assert(
corners !=
nullptr);
617 : deltas_{ 0, 0, 0, 0, 0 }
629 return deltas_[0] + deltas_[1];
634 return deltas_[0] + deltas_[1] + deltas_[2];
639 return deltas_[0] + deltas_[1] + deltas_[2] + deltas_[3];
644 return deltas_[0] + deltas_[1] + deltas_[2] + deltas_[3] + deltas_[4];
649 deltas_[4] = deltas_[3];
650 deltas_[3] = deltas_[2];
651 deltas_[2] = deltas_[1];
652 deltas_[1] = deltas_[0];
653 deltas_[0] = newDelta;
667 const int currentDelta = int(*(pixel + 0) - *(pixel - 1));
684 history.
push(currentDelta);
691 const int currentDelta = int(*(pixel + 0) - *(pixel - 1));
708 history.
push(currentDelta);
713inline unsigned int FinderPatternDetector::determineThreshold(
const uint8_t* yPosition,
const unsigned int segmentSize1,
const unsigned int segmentSize2,
const unsigned int segmentSize3,
const unsigned int segmentSize4,
const unsigned int segmentSize5,
const bool isNormalReflectance)
715 unsigned int sumForeground = 0u;
716 unsigned int sumBackground = 0u;
718 sumBackground += *(yPosition - 1);
720 for (
unsigned int n = 0u; n < segmentSize1; ++n)
722 sumForeground += *yPosition++;
725 for (
unsigned int n = 0u; n < segmentSize2; ++n)
727 sumBackground += *yPosition++;
730 for (
unsigned int n = 0u; n < segmentSize3; ++n)
732 sumForeground += *yPosition++;
735 for (
unsigned int n = 0u; n < segmentSize4; ++n)
737 sumBackground += *yPosition++;
740 for (
unsigned int n = 0u; n < segmentSize5; ++n)
742 sumForeground += *yPosition++;
745 sumBackground += *yPosition;
747 const unsigned int averageForeground = sumForeground / (segmentSize1 + segmentSize3 + segmentSize5);
748 const unsigned int averageBackground = sumBackground / (segmentSize2 + segmentSize4 + 2u);
749 const unsigned int averageBlack = isNormalReflectance ? averageForeground : averageBackground;
750 const unsigned int averageWhite = isNormalReflectance ? averageBackground : averageForeground;
752 if (averageBlack + 2u >= averageWhite)
755 return (
unsigned int)(-1);
758 return (averageBlack + averageWhite + 1u) / 2u;
764 ocean_assert(finderPatternB.
corners() !=
nullptr && finderPatternA.
corners() !=
nullptr);
765 ocean_assert(distanceTolerance >= 0);
767 const Line2 linesB[4] =
778 const Scalar squareDistanceThreshold = (lineAB.
length() * distanceTolerance) * (lineAB.
length() * distanceTolerance);
780 for (
unsigned int n = 0u; n < 4u; ++n)
798 if (sqrDistanceCornerA0 < squareDistanceThreshold && sqrDistanceCornerA1 < squareDistanceThreshold)
800 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[2]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[3]) < squareDistanceThreshold)
808 if (sqrDistanceCornerA1 < squareDistanceThreshold && sqrDistanceCornerA2 < squareDistanceThreshold)
810 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[3]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[0]) < squareDistanceThreshold)
818 if (sqrDistanceCornerA2 < squareDistanceThreshold && sqrDistanceCornerA3 < squareDistanceThreshold)
820 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[0]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[1]) < squareDistanceThreshold)
826 if (sqrDistanceCornerA3 < squareDistanceThreshold && sqrDistanceCornerA0 < squareDistanceThreshold)
828 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[1]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[2]) < squareDistanceThreshold)
841 ocean_assert(finderPatternB.
corners() !=
nullptr && finderPatternA.
corners() !=
nullptr);
849 (finderPatternA.
corners()[2] - finderPatternA.
corners()[0]).normalizedOrZero(),
850 (finderPatternA.
corners()[3] - finderPatternA.
corners()[1]).normalizedOrZero()
853 unsigned int diagonalEdgeA = (
unsigned int)(-1);
854 unsigned int diagonalEdgeB = (
unsigned int)(-1);
856 if (
Numeric::abs(diagonalsA[0] * directionAB) >= angleThreshold)
860 else if (
Numeric::abs(diagonalsA[1] * directionAB) >= angleThreshold)
865 if (diagonalEdgeA >= 2u)
872 (finderPatternB.
corners()[2] - finderPatternB.
corners()[0]).normalizedOrZero(),
873 (finderPatternB.
corners()[3] - finderPatternB.
corners()[1]).normalizedOrZero()
876 if (
Numeric::abs(diagonalsB[0] * directionAB) >= angleThreshold)
880 else if (
Numeric::abs(diagonalsB[1] * directionAB) >= angleThreshold)
885 return diagonalEdgeA < 2u && diagonalEdgeB < 2u;
This class implements Bresenham's line algorithms.
Definition Bresenham.h:27
This class implements a simple history for previous pixel transitions (a sliding window of pixel tran...
Definition FinderPatternDetector.h:215
int history2()
Returns the history with window size N.
Definition FinderPatternDetector.h:627
int history3()
Returns the history with window size N.
Definition FinderPatternDetector.h:632
void push(const int newDelta)
Adds a new delta object as most recent history.
Definition FinderPatternDetector.h:647
void reset()
Resets the history object.
Definition FinderPatternDetector.h:656
int history5()
Returns the history with window size N.
Definition FinderPatternDetector.h:642
TransitionHistory()
Creates a new history object.
Definition FinderPatternDetector.h:616
int history4()
Returns the history with window size N.
Definition FinderPatternDetector.h:637
int history1()
Returns the history with window size N.
Definition FinderPatternDetector.h:622
This class implements a detector for finder patterns which are part of QR Codes.
Definition FinderPatternDetector.h:205
static bool isDiagonal(const FinderPattern &finderPatternA, const FinderPattern &finderPatternB, const Scalar angleTolerance=Numeric::deg2rad(9))
Returns true if a pair of finder patterns is in a diagonal configuration, i.e.
Definition FinderPatternDetector.h:838
static constexpr int deltaThreshold
The intensity threshold between two successive pixels to count as a transition from dark to light (or...
Definition FinderPatternDetector.h:209
static bool checkFinderPatternInNeighborhood(const uint8_t *const yFrame, const unsigned width, const unsigned height, const unsigned int paddingElements, const unsigned int xCenter, const unsigned int yCenter, const unsigned int threshold, const unsigned int blackSquareSegmentMin, const unsigned int blackSquareSegmentMax, const unsigned int whiteSquareSegmentMin, const unsigned int whiteSquareSegmentMax, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, const bool isNormalReflectance, Scalar &symmetryScore, Vector2 *edgePoints)
Performs a check around a given candidate location looking for a correct configuration of light and d...
static bool findRefinementEdgeTransition(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const FinderPattern &finderPattern, const Vector2 &point, const Vector2 &perpendicularOut, const unsigned int maxPerpendicularSearchDistance, VectorT2< unsigned int > &pixelLocationIn, VectorT2< unsigned int > &pixelLocationOut)
Finds a foreground/background edge transition used to refine finder-pattern edges.
static void addFinderPatternCandidateInRow(const uint8_t *const yFrame, const uint8_t *const yRow, const unsigned int width, const unsigned int height, const unsigned int y, const unsigned int paddingElements, const unsigned int segment1StartForeground, const unsigned int segment3StartForeground, const unsigned int segment4StartBackground, const unsigned int segment1Size, const unsigned int segment2Size, const unsigned int segment3Size, const unsigned int segment4Size, const unsigned int segment5Size, const unsigned int foregroundSquareSegmentMin, const unsigned int foregroundSquareSegmentMax, const unsigned int backgroundSquareSegmentMin, const unsigned int backgroundSquareSegmentMax, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, const bool isNormalReflectance, FinderPatterns &finderPatterns)
Validates and adds a finder pattern candidate from a 1D row match.
static bool refineFinderPatternLocation(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, FinderPattern &finderPattern, const unsigned int yFramePaddingElements=0u)
Refine the location and corners of a finder pattern.
static bool checkSegmentDirectional(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const unsigned int threshold, const unsigned int segmentMin, const unsigned int segmentMax, TransitionDetector::FindNextPixelFunc findNextPixel, Bresenham &bresenhamTop, Bresenham &bresenhamBottom, unsigned int &topColumns, unsigned int &topRows, unsigned int &bottomColumns, unsigned int &bottomRows, VectorT2< unsigned int > &topIn, VectorT2< unsigned int > &topOut, VectorT2< unsigned int > &bottomIn, VectorT2< unsigned int > &bottomOut)
Checks a non-center finder-pattern segment in both scanline directions.
static IndexTriplets extractIndexTriplets(const FinderPatterns &finderPatterns, const Scalar distanceScaleTolerance=Scalar(0.175), const Scalar moduleSizeScaleTolerance=Scalar(0.35), const Scalar angleTolerance=Numeric::deg2rad(Scalar(9)))
Extract 3-tuples of finder patterns that form good (plausible) candidates for QR code symbols.
static bool isTransitionToBlack(const uint8_t *pixel, TransitionHistory &history)
Checks whether the given pixel is a transition-to-black pixel (whether the direct left neighbor is a ...
Definition FinderPatternDetector.h:665
static void detectFinderPatternsSubset(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, FinderPatterns *finderPatterns, Lock *multiThreadLock, const unsigned int paddingElements, const unsigned int firstRow, const unsigned int numberRows, const bool detectInvertedReflectance)
Detects finder patterns of QR codes in subregion of a given 8 bit grayscale image.
static bool checkFinderPatternDirectional(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const unsigned int xCenter, const unsigned int yCenter, const Scalar angle, const unsigned int threshold, const unsigned int blackSquareSegmentMin, const unsigned int blackSquareSegmentMax, const unsigned int whiteSquareSegmentMin, const unsigned int whiteSquareSegmentMax, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, const bool isNormalReflectance, Vector2 &topBorder, Vector2 &bottomBorder)
Performs a check for a given candidate location in a specified direction (yielding 2 edge points)
static bool findNextTransitionInRow(const uint8_t *const yRow, const unsigned int width, unsigned int &x, bool(*transitionDetector)(const uint8_t *, TransitionHistory &))
Finds the next transition in a row.
static FinderPatterns detectFinderPatterns(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int minimumDistance=10u, const unsigned int paddingElements=0u, Worker *worker=nullptr, const bool detectInvertedReflectance=false)
Detects finder patterns of a QR code in a 8 bit grayscale image.
static bool estimateFinderPatternCorners(const unsigned int xCenter, const unsigned int yCenter, const Vector2 *edgePoints, const unsigned int edgePointsSize, Vector2 &location, Vector2 *corners, Vector2 &orientation, Scalar &moduleSize, const Scalar edgePointDistanceTolerance=2.25, const Scalar maxEdgeLineDistance=1.5)
Estimates the locations of the corners of finder pattern and computes the dominant orientation of the...
static bool isParallel(const FinderPattern &finderPatternA, const FinderPattern &finderPatternB, const Scalar distanceTolerance=Scalar(0.05))
Returns true if a pair of finder patterns is in parallel configuration, i.e., if one is above/below/l...
Definition FinderPatternDetector.h:761
static unsigned int determineThreshold(const uint8_t *yPosition, const unsigned int segmentSize1, const unsigned int segmentSize2, const unsigned int segmentSize3, const unsigned int segmentSize4, const unsigned int segmentSize5, const bool isNormalReflectance)
Determines the gray threshold separating bright pixels form dark pixels.
Definition FinderPatternDetector.h:713
static bool checkCenterSegmentDirectional(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const unsigned int xCenter, const unsigned int yCenter, const unsigned int threshold, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, TransitionDetector::FindNextPixelFunc findNextBackgroundPixel, Bresenham &bresenhamTop, Bresenham &bresenhamBottom, unsigned int &topColumns, unsigned int &topRows, unsigned int &bottomColumns, unsigned int &bottomRows, VectorT2< unsigned int > &topIn, VectorT2< unsigned int > &topOut, VectorT2< unsigned int > &bottomIn, VectorT2< unsigned int > &bottomOut)
Checks the center foreground segment in both scanline directions.
static void detectFinderPatternInRow(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int y, FinderPatterns &finderPatterns, const unsigned int paddingElements, const bool isNormalReflectance)
Detects finder patterns of QR codes in a single row of an grayscale image.
static bool isTransitionToWhite(const uint8_t *pixel, TransitionHistory &history)
Checks whether the given pixel is a transition-to-white pixel (whether the direct left neighbor is a ...
Definition FinderPatternDetector.h:689
Definition of a class for finder patterns of QR codes (squares in the top-left, top-right and bottom-...
Definition FinderPatternDetector.h:58
const Vector2 * corners() const
Returns a pointer to the four corners of this finder pattern.
Definition FinderPatternDetector.h:588
Scalar symmetryScore() const
Returns the symmetry score that was determined when this finder pattern was detected.
Definition FinderPatternDetector.h:578
const Vector2 & orientation() const
Returns the dominant orientation of this finder pattern.
Definition FinderPatternDetector.h:600
Vector2 corners_[4]
The four corners of this finder pattern; points are stored in counter-clockwise order but no guarante...
Definition FinderPatternDetector.h:179
bool cornersKnown_
True if the four corners of this finder pattern are known, otherwise false.
Definition FinderPatternDetector.h:176
Scalar length() const
Returns the radius of the finder pattern.
Definition FinderPatternDetector.h:558
bool cornersKnown() const
Returns true if the four corners of this finder pattern are known, otherwise false.
Definition FinderPatternDetector.h:583
const Vector2 & position() const
Returns the (center) position of the finder pattern.
Definition FinderPatternDetector.h:553
unsigned int grayThreshold() const
Returns the threshold that was used for the detection of this finder pattern.
Definition FinderPatternDetector.h:568
Vector2 orientation_
Dominant orientation of this finder pattern.
Definition FinderPatternDetector.h:182
bool isNormalReflectance() const
Returns whether this finder pattern is of normal reflectance.
Definition FinderPatternDetector.h:606
static bool comesBefore(const FinderPattern &first, const FinderPattern &second)
Comparator to sort finder patterns based on their location in an image Pattern a comes before pattern...
Definition FinderPatternDetector.h:611
Scalar symmetryScore_
The symmetry score of this finder pattern, range: [0, infinity) (lower score = higher symmetry)
Definition FinderPatternDetector.h:173
Vector2 position_
The (center) position of the finder pattern within the camera frame.
Definition FinderPatternDetector.h:161
Scalar moduleSize_
Module width (bit width) in pixels.
Definition FinderPatternDetector.h:185
FinderPattern()
Creates an invalid finder pattern object.
Definition FinderPatternDetector.h:500
Scalar length_
The edge length of the finder pattern in pixels, range: (0, infinity).
Definition FinderPatternDetector.h:164
unsigned int grayThreshold_
The threshold that was used during the detection of this finder pattern.
Definition FinderPatternDetector.h:170
unsigned int centerIntensity_
The intensity value that has been measured in the center of the finder pattern.
Definition FinderPatternDetector.h:167
Scalar moduleSize() const
Returns the width of a module (= bit) in pixels.
Definition FinderPatternDetector.h:573
unsigned int centerIntensity() const
Returns the intensity value that was measured in the center of the finder pattern.
Definition FinderPatternDetector.h:563
bool(*)(const uint8_t *const, const unsigned int, const unsigned int, const unsigned int, const unsigned int, const unsigned int, CV::Bresenham &, const unsigned int, const unsigned int, unsigned int &, unsigned int &, VectorT2< unsigned int > &, VectorT2< unsigned int > &) FindNextPixelFunc
Function pointer to functions that detect a transition.
Definition TransitionDetector.h:42
static bool isBlack(const T &intensityValue, const T &threshold)
Determines whether an intensity value is black according to threshold value.
Definition TransitionDetector.h:181
This class implements an infinite line in 2D space.
Definition Line2.h:83
T sqrDistance(const VectorT2< T > &point) const
Returns the square distance between the line and a given point.
Definition Line2.h:498
This class implements a recursive lock object.
Definition Lock.h:31
This class provides basic numeric functionalities.
Definition Numeric.h:57
static constexpr T deg2rad(const T deg)
Converts deg to rad.
Definition Numeric.h:3241
static T abs(const T value)
Returns the absolute value of a given value.
Definition Numeric.h:1220
static constexpr bool isEqualEps(const T value)
Returns whether a value is smaller than or equal to a small epsilon.
Definition Numeric.h:2096
static T cos(const T value)
Returns the cosine of a given value.
Definition Numeric.h:1588
const T & x() const noexcept
Returns the x value.
Definition Vector2.h:703
const T & y() const noexcept
Returns the y value.
Definition Vector2.h:715
VectorT2< T > normalized() const
Returns the normalized vector.
Definition Vector2.h:563
VectorT2< T > normalizedOrZero() const
Returns the normalized vector.
Definition Vector2.h:577
T length() const
Returns the length of the vector.
Definition Vector2.h:620
This class implements a worker able to distribute function calls over different threads.
Definition Worker.h:33
unsigned int sqrDistance(const char first, const char second)
Returns the square distance between two values.
Definition base/Utilities.h:1159
std::vector< FinderPattern > FinderPatterns
Definition of a vector holding finder pattern.
Definition FinderPatternDetector.h:192
std::vector< IndexTriplet > IndexTriplets
Definition of a vector index triplets.
Definition FinderPatternDetector.h:51
std::array< FinderPattern, 3 > FinderPatternTriplet
Definition of a 3-tuple of finder patterns.
Definition FinderPatternDetector.h:198
std::array< unsigned int, 3 > IndexTriplet
Definition of a triplet of indices.
Definition FinderPatternDetector.h:45
LineT2< Scalar > Line2
Definition of the Line2 object, depending on the OCEAN_MATH_USE_SINGLE_PRECISION either with single o...
Definition Line2.h:28
float Scalar
Definition of a scalar type.
Definition Math.h:129
VectorT2< Scalar > Vector2
Definition of a 2D vector.
Definition Vector2.h:28
std::vector< QRCode > QRCodes
Definition of a vector of QR codes.
Definition QRCode.h:28
The namespace covering the entire Ocean framework.
Definition Accessor.h:15