mirror of https://github.com/opencv/opencv.git
parent
af03e000c7
commit
b729d8e821
8 changed files with 166 additions and 132 deletions
@ -0,0 +1,81 @@ |
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html
|
||||
#ifndef OPENCV_OBJDETECT_GRAPHICAL_CODE_DETECTOR_HPP |
||||
#define OPENCV_OBJDETECT_GRAPHICAL_CODE_DETECTOR_HPP |
||||
|
||||
#include <opencv2/core.hpp> |
||||
|
||||
namespace cv { |
||||
|
||||
//! @addtogroup objdetect_common
|
||||
//! @{
|
||||
|
||||
class CV_EXPORTS_W_SIMPLE GraphicalCodeDetector { |
||||
public: |
||||
CV_DEPRECATED_EXTERNAL // avoid using in C++ code, will be moved to "protected" (need to fix bindings first)
|
||||
GraphicalCodeDetector(); |
||||
|
||||
GraphicalCodeDetector(const GraphicalCodeDetector&) = default; |
||||
GraphicalCodeDetector(GraphicalCodeDetector&&) = default; |
||||
GraphicalCodeDetector& operator=(const GraphicalCodeDetector&) = default; |
||||
GraphicalCodeDetector& operator=(GraphicalCodeDetector&&) = default; |
||||
|
||||
/** @brief Detects graphical code in image and returns the quadrangle containing the code.
|
||||
@param img grayscale or color (BGR) image containing (or not) graphical code. |
||||
@param points Output vector of vertices of the minimum-area quadrangle containing the code. |
||||
*/ |
||||
CV_WRAP bool detect(InputArray img, OutputArray points) const; |
||||
|
||||
/** @brief Decodes graphical code in image once it's found by the detect() method.
|
||||
|
||||
Returns UTF8-encoded output string or empty string if the code cannot be decoded. |
||||
@param img grayscale or color (BGR) image containing graphical code. |
||||
@param points Quadrangle vertices found by detect() method (or some other algorithm). |
||||
@param straight_code The optional output image containing binarized code, will be empty if not found. |
||||
*/ |
||||
CV_WRAP std::string decode(InputArray img, InputArray points, OutputArray straight_code = noArray()) const; |
||||
|
||||
/** @brief Both detects and decodes graphical code
|
||||
|
||||
@param img grayscale or color (BGR) image containing graphical code. |
||||
@param points optional output array of vertices of the found graphical code quadrangle, will be empty if not found. |
||||
@param straight_code The optional output image containing binarized code |
||||
*/ |
||||
CV_WRAP std::string detectAndDecode(InputArray img, OutputArray points = noArray(), |
||||
OutputArray straight_code = noArray()) const; |
||||
|
||||
|
||||
/** @brief Detects graphical codes in image and returns the vector of the quadrangles containing the codes.
|
||||
@param img grayscale or color (BGR) image containing (or not) graphical codes. |
||||
@param points Output vector of vector of vertices of the minimum-area quadrangle containing the codes. |
||||
*/ |
||||
CV_WRAP bool detectMulti(InputArray img, OutputArray points) const; |
||||
|
||||
/** @brief Decodes graphical codes in image once it's found by the detect() method.
|
||||
@param img grayscale or color (BGR) image containing graphical codes. |
||||
@param decoded_info UTF8-encoded output vector of string or empty vector of string if the codes cannot be decoded. |
||||
@param points vector of Quadrangle vertices found by detect() method (or some other algorithm). |
||||
@param straight_code The optional output vector of images containing binarized codes |
||||
*/ |
||||
CV_WRAP bool decodeMulti(InputArray img, InputArray points, CV_OUT std::vector<std::string>& decoded_info, |
||||
OutputArrayOfArrays straight_code = noArray()) const; |
||||
|
||||
/** @brief Both detects and decodes graphical codes
|
||||
@param img grayscale or color (BGR) image containing graphical codes. |
||||
@param decoded_info UTF8-encoded output vector of string or empty vector of string if the codes cannot be decoded. |
||||
@param points optional output vector of vertices of the found graphical code quadrangles. Will be empty if not found. |
||||
@param straight_code The optional vector of images containing binarized codes |
||||
*/ |
||||
CV_WRAP bool detectAndDecodeMulti(InputArray img, CV_OUT std::vector<std::string>& decoded_info, OutputArray points = noArray(), |
||||
OutputArrayOfArrays straight_code = noArray()) const; |
||||
struct Impl; |
||||
protected: |
||||
Ptr<Impl> p; |
||||
}; |
||||
|
||||
//! @}
|
||||
|
||||
} |
||||
|
||||
#endif |
@ -0,0 +1,45 @@ |
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html
|
||||
|
||||
#include "precomp.hpp" |
||||
#include "opencv2/objdetect/graphical_code_detector.hpp" |
||||
#include "graphical_code_detector_impl.hpp" |
||||
|
||||
namespace cv { |
||||
|
||||
GraphicalCodeDetector::GraphicalCodeDetector() {} |
||||
|
||||
bool GraphicalCodeDetector::detect(InputArray img, OutputArray points) const { |
||||
CV_Assert(p); |
||||
return p->detect(img, points); |
||||
} |
||||
|
||||
std::string GraphicalCodeDetector::decode(InputArray img, InputArray points, OutputArray straight_code) const { |
||||
CV_Assert(p); |
||||
return p->decode(img, points, straight_code); |
||||
} |
||||
|
||||
std::string GraphicalCodeDetector::detectAndDecode(InputArray img, OutputArray points, OutputArray straight_code) const { |
||||
CV_Assert(p); |
||||
return p->detectAndDecode(img, points, straight_code); |
||||
} |
||||
|
||||
bool GraphicalCodeDetector::detectMulti(InputArray img, OutputArray points) const { |
||||
CV_Assert(p); |
||||
return p->detectMulti(img, points); |
||||
} |
||||
|
||||
bool GraphicalCodeDetector::decodeMulti(InputArray img, InputArray points, std::vector<std::string>& decoded_info, |
||||
OutputArrayOfArrays straight_code) const { |
||||
CV_Assert(p); |
||||
return p->decodeMulti(img, points, decoded_info, straight_code); |
||||
} |
||||
|
||||
bool GraphicalCodeDetector::detectAndDecodeMulti(InputArray img, std::vector<std::string>& decoded_info, OutputArray points, |
||||
OutputArrayOfArrays straight_code) const { |
||||
CV_Assert(p); |
||||
return p->detectAndDecodeMulti(img, decoded_info, points, straight_code); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,25 @@ |
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html
|
||||
#ifndef OPENCV_OBJDETECT_GRAPHICAL_CODE_DETECTOR_IMPL_HPP |
||||
#define OPENCV_OBJDETECT_GRAPHICAL_CODE_DETECTOR_IMPL_HPP |
||||
|
||||
#include <opencv2/core.hpp> |
||||
|
||||
namespace cv { |
||||
|
||||
struct GraphicalCodeDetector::Impl { |
||||
virtual ~Impl() {} |
||||
virtual bool detect(InputArray img, OutputArray points) const = 0; |
||||
virtual std::string decode(InputArray img, InputArray points, OutputArray straight_code) const = 0; |
||||
virtual std::string detectAndDecode(InputArray img, OutputArray points, OutputArray straight_code) const = 0; |
||||
virtual bool detectMulti(InputArray img, OutputArray points) const = 0; |
||||
virtual bool decodeMulti(InputArray img, InputArray points, std::vector<std::string>& decoded_info, |
||||
OutputArrayOfArrays straight_code) const = 0; |
||||
virtual bool detectAndDecodeMulti(InputArray img, std::vector<std::string>& decoded_info, |
||||
OutputArray points, OutputArrayOfArrays straight_code) const = 0; |
||||
}; |
||||
|
||||
} |
||||
|
||||
#endif |
Loading…
Reference in new issue