Skip to content

Commit

Permalink
fix setter, fix Ptr, fix doc
Browse files Browse the repository at this point in the history
  • Loading branch information
AleksandrPanov committed May 26, 2023
1 parent e02369b commit 4a81fc3
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 17 deletions.
6 changes: 3 additions & 3 deletions modules/objdetect/include/opencv2/objdetect.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -839,12 +839,12 @@ class CV_EXPORTS_W QRCodeDetector : public QRCodeDetectorBase
@param epsX Epsilon neighborhood, which allows you to determine the horizontal pattern
of the scheme 1:1:3:1:1 according to QR code standard.
*/
CV_WRAP void setEpsX(double epsX);
CV_WRAP QRCodeDetector& setEpsX(double epsX);
/** @brief sets the epsilon used during the vertical scan of QR code stop marker detection.
@param epsY Epsilon neighborhood, which allows you to determine the vertical pattern
of the scheme 1:1:3:1:1 according to QR code standard.
*/
CV_WRAP void setEpsY(double epsY);
CV_WRAP QRCodeDetector& setEpsY(double epsY);

/** @brief use markers to improve the position of the corners of the QR code
*
Expand Down Expand Up @@ -905,7 +905,7 @@ class CV_EXPORTS_W QRCodeDetectorAruco : public QRCodeDetectorBase {
CV_PROP_RW float scaleTimingPatternScore;
};

/** @brief QR code detector constructor for Aruco-based algorithm. See #cv::QrWithArucoParams */
/** @brief QR code detector constructor for Aruco-based algorithm. See cv::QRCodeDetectorAruco::Params */
CV_WRAP explicit QRCodeDetectorAruco(const QRCodeDetectorAruco::Params& params = QRCodeDetectorAruco::Params());

/** @brief Detector parameters setter. See cv::QRCodeDetectorAruco::Params */
Expand Down
10 changes: 8 additions & 2 deletions modules/objdetect/src/qrcode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1017,8 +1017,14 @@ QRCodeDetector::QRCodeDetector() {

QRCodeDetector::~QRCodeDetector() {}

void QRCodeDetector::setEpsX(double epsX) { (std::static_pointer_cast<ImplContour>)(p)->epsX = epsX; }
void QRCodeDetector::setEpsY(double epsY) { (std::static_pointer_cast<ImplContour>)(p)->epsY = epsY; }
QRCodeDetector& QRCodeDetector::setEpsX(double epsX) {
(std::static_pointer_cast<ImplContour>)(p)->epsX = epsX;
return *this;
}
QRCodeDetector& QRCodeDetector::setEpsY(double epsY) {
(std::static_pointer_cast<ImplContour>)(p)->epsY = epsY;
return *this;
}

bool ImplContour::detect(InputArray in, OutputArray points) const
{
Expand Down
24 changes: 12 additions & 12 deletions samples/cpp/qrcode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ void drawQRCodeResults(Mat& frame, const vector<Point>& corners, const vector<cv

static
void runQR(
Ptr<QRCodeDetectorBase> qrcode, const Mat& input,
QRCodeDetectorBase& qrcode, const Mat& input,
vector<Point>& corners, vector<cv::String>& decode_info
// +global: bool g_modeMultiQR, bool g_detectOnly
)
Expand All @@ -169,32 +169,32 @@ void runQR(
{
if (!g_detectOnly)
{
String decode_info1 = qrcode->detectAndDecode(input, corners);
String decode_info1 = qrcode.detectAndDecode(input, corners);
decode_info.push_back(decode_info1);
}
else
{
bool detection_result = qrcode->detect(input, corners);
bool detection_result = qrcode.detect(input, corners);
CV_UNUSED(detection_result);
}
}
else
{
if (!g_detectOnly)
{
bool result_detection = qrcode->detectAndDecodeMulti(input, decode_info, corners);
bool result_detection = qrcode.detectAndDecodeMulti(input, decode_info, corners);
CV_UNUSED(result_detection);
}
else
{
bool result_detection = qrcode->detectMulti(input, corners);
bool result_detection = qrcode.detectMulti(input, corners);
CV_UNUSED(result_detection);
}
}
}

static
double processQRCodeDetection(cv::Ptr<QRCodeDetectorBase> qrcode, const Mat& input, Mat& result, vector<Point>& corners)
double processQRCodeDetection(QRCodeDetectorBase& qrcode, const Mat& input, Mat& result, vector<Point>& corners)
{
if (input.channels() == 1)
cvtColor(input, result, COLOR_GRAY2BGR);
Expand Down Expand Up @@ -232,11 +232,11 @@ int liveQRCodeDetect()
cout << "Press 'd' to switch between decoder and detector" << endl;
cout << "Press ' ' (space) to save result into images" << endl;
cout << "Press 'ESC' to exit" << endl;
Ptr<QRCodeDetectorBase> qrcode;
QRCodeDetectorBase qrcode;
if (g_useArucoBased)
qrcode = makePtr<QRCodeDetectorAruco>();
qrcode = QRCodeDetectorAruco();
else
qrcode = makePtr<QRCodeDetector>();
qrcode = QRCodeDetector();

for (;;)
{
Expand Down Expand Up @@ -317,11 +317,11 @@ int imageQRCodeDetect(const string& in_file)
<< " on image: " << input.size() << " (" << typeToString(input.type()) << ")"
<< endl;

Ptr<QRCodeDetectorBase> qrcode;
QRCodeDetectorBase qrcode;
if (g_useArucoBased)
qrcode = makePtr<QRCodeDetectorAruco>();
qrcode = QRCodeDetectorAruco();
else
qrcode = makePtr<QRCodeDetector>();
qrcode = QRCodeDetector();

vector<Point> corners;
vector<cv::String> decode_info;
Expand Down

0 comments on commit 4a81fc3

Please sign in to comment.