//---------------------------------------------------------------------------- // // Copyright (C) 2004-2025 by EMGU Corporation. All rights reserved. // //---------------------------------------------------------------------------- #include "objdetect_c.h" cv::QRCodeDetector* cveQRCodeDetectorCreate(cv::GraphicalCodeDetector** graphicalCodeDetector) { #ifdef HAVE_OPENCV_OBJDETECT cv::QRCodeDetector* result = new cv::QRCodeDetector(); *graphicalCodeDetector = static_cast(result); return result; #else throw_no_objdetect(); #endif } void cveQRCodeDetectorRelease(cv::QRCodeDetector** detector) { #ifdef HAVE_OPENCV_OBJDETECT delete *detector; *detector = 0; #else throw_no_objdetect(); #endif } void cveQRCodeDetectorDecodeCurved(cv::QRCodeDetector* detector, cv::_InputArray* img, cv::_InputArray* points, cv::String* decodedInfo, cv::_OutputArray* straightQrcode) { #ifdef HAVE_OPENCV_OBJDETECT std::string s = detector->decodeCurved(*img, *points, straightQrcode ? *straightQrcode : static_cast(cv::noArray())); *decodedInfo = s; #else throw_no_objdetect(); #endif } int cveQRCodeDetectorGetEncoding(cv::QRCodeDetector* detector, int codeIdx) { #ifdef HAVE_OPENCV_OBJDETECT return detector->getEncoding(codeIdx); #else throw_no_objdetect(); #endif } cv::QRCodeDetectorAruco* cveQRCodeDetectorArucoCreate(cv::GraphicalCodeDetector** graphicalCodeDetector) { #ifdef HAVE_OPENCV_OBJDETECT cv::QRCodeDetectorAruco* result = new cv::QRCodeDetectorAruco(); *graphicalCodeDetector = static_cast(result); return result; #else throw_no_objdetect(); #endif } void cveQRCodeDetectorArucoRelease(cv::QRCodeDetectorAruco** detector) { #ifdef HAVE_OPENCV_OBJDETECT delete* detector; *detector = 0; #else throw_no_objdetect(); #endif } cv::QRCodeEncoder* cveQRCodeEncoderCreate( cv::Ptr** sharedPtr, int version, int correctionLevel, int mode, int structureNumber) { #ifdef HAVE_OPENCV_OBJDETECT cv::QRCodeEncoder::Params p; p.version = version; p.correction_level = static_cast(correctionLevel); p.mode = static_cast(mode); p.structure_number = structureNumber; cv::Ptr ptr = cv::QRCodeEncoder::create(); *sharedPtr = new cv::Ptr(ptr); return ptr.get(); #else throw_no_objdetect(); #endif } void cveQRCodeEncoderRelease(cv::QRCodeEncoder** encoder, cv::Ptr** sharedPtr) { #ifdef HAVE_OPENCV_OBJDETECT delete* sharedPtr; *encoder = 0; *sharedPtr = 0; #else throw_no_objdetect(); #endif } void cveQRCodeEncoderEncode(cv::QRCodeEncoder* encoder, cv::String* encodedInfo, cv::_OutputArray* qrcode) { #ifdef HAVE_OPENCV_OBJDETECT encoder->encode(*encodedInfo, *qrcode); #else throw_no_objdetect(); #endif } cv::barcode::BarcodeDetector* cveBarcodeDetectorCreate( cv::String* prototxtPath, cv::String* modelPath, cv::GraphicalCodeDetector** graphicalCodeDetector) { #ifdef HAVE_OPENCV_OBJDETECT cv::barcode::BarcodeDetector* result = new cv::barcode::BarcodeDetector( *prototxtPath, *modelPath); *graphicalCodeDetector = static_cast(result); return result; #else throw_no_objdetect(); #endif } void cveBarcodeDetectorRelease(cv::barcode::BarcodeDetector** detector) { #ifdef HAVE_OPENCV_OBJDETECT delete* detector; detector = 0; #else throw_no_objdetect(); #endif } bool cveGraphicalCodeDetectorDetect(cv::GraphicalCodeDetector* detector, cv::_InputArray* img, cv::_OutputArray* points) { #ifdef HAVE_OPENCV_OBJDETECT return detector->detect(*img, *points); #else throw_no_objdetect(); #endif } bool cveGraphicalCodeDetectorDetectMulti(cv::GraphicalCodeDetector* detector, cv::_InputArray* img, cv::_OutputArray* points) { #ifdef HAVE_OPENCV_OBJDETECT return detector->detectMulti(*img, *points); #else throw_no_objdetect(); #endif } void cveGraphicalCodeDetectorDecode(cv::GraphicalCodeDetector* detector, cv::_InputArray* img, cv::_InputArray* points, cv::_OutputArray* straightCode, cv::String* output) { #ifdef HAVE_OPENCV_OBJDETECT *output = detector->decode(*img, *points, straightCode ? *straightCode : static_cast(cv::noArray())); #else throw_no_objdetect(); #endif } bool cveGraphicalCodeDetectorDecodeMulti( cv::GraphicalCodeDetector* detector, cv::_InputArray* img, cv::_InputArray* points, std::vector< std::string >* decodedInfo, cv::_OutputArray* straightCode) { #ifdef HAVE_OPENCV_OBJDETECT return detector->decodeMulti( *img, *points, *decodedInfo, straightCode ? *straightCode : static_cast(cv::noArray()) ); #else throw_no_objdetect(); #endif } bool cveGraphicalCodeDetectorDetectAndDecodeMulti( cv::GraphicalCodeDetector* detector, cv::_InputArray* img, std::vector< std::string >* decodedInfo, cv::_OutputArray* points, cv::_OutputArray* straightCode) { #ifdef HAVE_OPENCV_OBJDETECT return detector->detectAndDecodeMulti( *img, *decodedInfo, *points, straightCode ? *straightCode : static_cast(cv::noArray()) ); #else throw_no_objdetect(); #endif }