diff --git a/src/dnn/dnn.cpp b/src/dnn/dnn.cpp index f70fda40..6deee826 100644 --- a/src/dnn/dnn.cpp +++ b/src/dnn/dnn.cpp @@ -276,10 +276,14 @@ CvStatus Layer_GetType(Layer layer, char **rval) END_WRAP } -void Layer_Close(LayerPtr layer){CVD_FREE(layer)} +void Layer_Close(LayerPtr layer) +{ + layer->ptr->reset(); + CVD_FREE(layer) +} -CvStatus - NMSBoxes(VecRect bboxes, VecFloat scores, float score_threshold, float nms_threshold, VecInt *indices) +CvStatus NMSBoxes(VecRect bboxes, VecFloat scores, float score_threshold, float nms_threshold, + VecInt *indices) { BEGIN_WRAP std::vector v; diff --git a/src/extra/img_hash.cpp b/src/extra/img_hash.cpp index fdf00226..1757b6e5 100644 --- a/src/extra/img_hash.cpp +++ b/src/extra/img_hash.cpp @@ -45,7 +45,11 @@ CvStatus BlockMeanHash_SetMode(BlockMeanHash self, int mode) BEGIN_WRAP(*self.ptr)->setMode(mode); END_WRAP } -void BlockMeanHash_Close(BlockMeanHashPtr self){CVD_FREE(self)} +void BlockMeanHash_Close(BlockMeanHashPtr self) +{ + self->ptr->reset(); + CVD_FREE(self) +} CvStatus BlockMeanHash_Compute(BlockMeanHash self, Mat inputArr, Mat outputArr) { diff --git a/src/extra/wechat_qrcode.cpp b/src/extra/wechat_qrcode.cpp index 0b7445db..90b616cc 100644 --- a/src/extra/wechat_qrcode.cpp +++ b/src/extra/wechat_qrcode.cpp @@ -1,4 +1,5 @@ #include "wechat_qrcode.h" +#include "core/core.h" #include CvStatus WeChatQRCode_New(WeChatQRCode *qrcode) @@ -17,13 +18,8 @@ CvStatus WeChatQRCode_NewWithParams(const char *detector_prototxt_path, const ch super_resolution_caffe_model_path)}; END_WRAP } -void WeChatQRCode_Close(WeChatQRCodePtr self) -{ - delete self->ptr; - self->ptr = nullptr; - delete self; - self = nullptr; -} +void WeChatQRCode_Close(WeChatQRCodePtr self){CVD_FREE(self)} + CvStatus WeChatQRCode_DetectAndDecode(WeChatQRCode *self, Mat img, VecMat *points, VecVecChar *rval) { BEGIN_WRAP diff --git a/src/features2d/features2d.cpp b/src/features2d/features2d.cpp index db4a339b..d5ad2aa9 100644 --- a/src/features2d/features2d.cpp +++ b/src/features2d/features2d.cpp @@ -14,7 +14,11 @@ CvStatus AKAZE_Create(AKAZE *rval) *rval = {new cv::Ptr(cv::AKAZE::create())}; END_WRAP } -void AKAZE_Close(AKAZEPtr a){CVD_FREE(a)} +void AKAZE_Close(AKAZEPtr a) +{ + a->ptr->reset(); + CVD_FREE(a) +} CvStatus AKAZE_Detect(AKAZE a, Mat src, VecKeyPoint *rval) { @@ -39,7 +43,11 @@ CvStatus AgastFeatureDetector_Create(AgastFeatureDetector *rval) *rval = {new cv::Ptr(cv::AgastFeatureDetector::create())}; END_WRAP } -void AgastFeatureDetector_Close(AgastFeatureDetectorPtr a){CVD_FREE(a)} +void AgastFeatureDetector_Close(AgastFeatureDetectorPtr a) +{ + a->ptr->reset(); + CVD_FREE(a) +} CvStatus AgastFeatureDetector_Detect(AgastFeatureDetector a, Mat src, VecKeyPoint *rval) { @@ -56,7 +64,11 @@ CvStatus BRISK_Create(BRISK *rval) *rval = {new cv::Ptr(cv::BRISK::create())}; END_WRAP } -void BRISK_Close(BRISKPtr b){CVD_FREE(b)} +void BRISK_Close(BRISKPtr b) +{ + b->ptr->reset(); + CVD_FREE(b) +} CvStatus BRISK_Detect(BRISK b, Mat src, VecKeyPoint *rval) { @@ -90,7 +102,11 @@ CvStatus FastFeatureDetector_CreateWithParams(int threshold, bool nonmaxSuppress cv::FastFeatureDetector::create(threshold, nonmaxSuppression, type_))}; END_WRAP } -void FastFeatureDetector_Close(FastFeatureDetectorPtr f){CVD_FREE(f)} +void FastFeatureDetector_Close(FastFeatureDetectorPtr f) +{ + f->ptr->reset(); + CVD_FREE(f) +} CvStatus FastFeatureDetector_Detect(FastFeatureDetector f, Mat src, VecKeyPoint *rval) { @@ -107,7 +123,11 @@ CvStatus GFTTDetector_Create(GFTTDetector *rval) *rval = {new cv::Ptr(cv::GFTTDetector::create())}; END_WRAP } -void GFTTDetector_Close(GFTTDetectorPtr a){CVD_FREE(a)} +void GFTTDetector_Close(GFTTDetectorPtr a) +{ + a->ptr->reset(); + CVD_FREE(a) +} CvStatus GFTTDetector_Detect(GFTTDetector a, Mat src, VecKeyPoint *rval) { @@ -124,7 +144,11 @@ CvStatus KAZE_Create(KAZE *rval) *rval = {new cv::Ptr(cv::KAZE::create())}; END_WRAP } -void KAZE_Close(KAZEPtr a){CVD_FREE(a)} +void KAZE_Close(KAZEPtr a) +{ + a->ptr->reset(); + CVD_FREE(a) +} CvStatus KAZE_Detect(KAZE a, Mat src, VecKeyPoint *rval) { @@ -149,7 +173,11 @@ CvStatus MSER_Create(MSER *rval) *rval = {new cv::Ptr(cv::MSER::create())}; END_WRAP } -void MSER_Close(MSERPtr a){CVD_FREE(a)} +void MSER_Close(MSERPtr a) +{ + a->ptr->reset(); + CVD_FREE(a) +} CvStatus MSER_Detect(MSER a, Mat src, VecKeyPoint *rval) { @@ -176,7 +204,11 @@ CvStatus ORB_CreateWithParams(int nfeatures, float scaleFactor, int nlevels, int WTA_K, type, patchSize, fastThreshold))}; END_WRAP } -void ORB_Close(ORBPtr o){CVD_FREE(o)} +void ORB_Close(ORBPtr o) +{ + o->ptr->reset(); + CVD_FREE(o) +} CvStatus ORB_Detect(ORB o, Mat src, VecKeyPoint *rval) { @@ -262,7 +294,11 @@ CvStatus SimpleBlobDetector_Create_WithParams(SimpleBlobDetectorParams params, S new cv::Ptr(cv::SimpleBlobDetector::create(ConvertCParamsToCPPParams(params)))}; END_WRAP } -void SimpleBlobDetector_Close(SimpleBlobDetectorPtr b){CVD_FREE(b)} +void SimpleBlobDetector_Close(SimpleBlobDetectorPtr b) +{ + b->ptr->reset(); + CVD_FREE(b) +} CvStatus SimpleBlobDetector_Detect(SimpleBlobDetector b, Mat src, VecKeyPoint *rval) { @@ -291,7 +327,11 @@ CvStatus BFMatcher_CreateWithParams(int normType, bool crossCheck, BFMatcher *rv *rval = {new cv::Ptr(cv::BFMatcher::create(normType, crossCheck))}; END_WRAP } -void BFMatcher_Close(BFMatcherPtr b){CVD_FREE(b)} +void BFMatcher_Close(BFMatcherPtr b) +{ + b->ptr->reset(); + CVD_FREE(b) +} CvStatus BFMatcher_Match(BFMatcher b, Mat query, Mat train, VecDMatch *rval) { @@ -316,7 +356,11 @@ CvStatus FlannBasedMatcher_Create(FlannBasedMatcher *rval) *rval = {new cv::Ptr(cv::FlannBasedMatcher::create())}; END_WRAP } -void FlannBasedMatcher_Close(FlannBasedMatcherPtr f){CVD_FREE(f)} +void FlannBasedMatcher_Close(FlannBasedMatcherPtr f) +{ + f->ptr->reset(); + CVD_FREE(f) +} CvStatus FlannBasedMatcher_KnnMatch(FlannBasedMatcher f, Mat query, Mat train, int k, VecVecDMatch *rval) { @@ -341,7 +385,11 @@ CvStatus SIFT_Create(SIFT *rval) *rval = {new cv::Ptr(cv::SIFT::create())}; END_WRAP } -void SIFT_Close(SIFTPtr f){CVD_FREE(f)} +void SIFT_Close(SIFTPtr f) +{ + f->ptr->reset(); + CVD_FREE(f) +} CvStatus SIFT_Detect(SIFT f, Mat src, VecKeyPoint *rval) { diff --git a/src/imgproc/imgproc.cpp b/src/imgproc/imgproc.cpp index c9ffbc00..7512d75f 100644 --- a/src/imgproc/imgproc.cpp +++ b/src/imgproc/imgproc.cpp @@ -715,7 +715,11 @@ CvStatus CLAHE_CreateWithParams(double clipLimit, Size tileGridSize, CLAHE *rval new cv::Ptr(cv::createCLAHE(clipLimit, cv::Size(tileGridSize.width, tileGridSize.height)))}; END_WRAP } -void CLAHE_Close(CLAHEPtr c){CVD_FREE(c)} +void CLAHE_Close(CLAHEPtr c) +{ + c->ptr->reset(); + CVD_FREE(c) +} CvStatus CLAHE_Apply(CLAHE c, Mat src, Mat dst) { diff --git a/src/objdetect/objdetect.cpp b/src/objdetect/objdetect.cpp index 633da79a..be44baa1 100644 --- a/src/objdetect/objdetect.cpp +++ b/src/objdetect/objdetect.cpp @@ -411,7 +411,7 @@ CvStatus FaceDetectorYN_NewFromBuffer(const char *framework, VecUChar buffer, Ve void FaceDetectorYN_Close(FaceDetectorYNPtr self) { - self->ptr = nullptr; + self->ptr->reset(); CVD_FREE(self) } @@ -486,7 +486,7 @@ CvStatus FaceRecognizerSF_New(const char *model, const char *config, int backend } void FaceRecognizerSF_Close(FaceRecognizerSFPtr self) { - self->ptr = nullptr; + self->ptr->reset(); CVD_FREE(self) } diff --git a/src/photo/photo.cpp b/src/photo/photo.cpp index ef89b01d..3bf9e31d 100644 --- a/src/photo/photo.cpp +++ b/src/photo/photo.cpp @@ -98,7 +98,11 @@ CvStatus MergeMertens_Process(MergeMertens b, VecMat src, Mat dst) BEGIN_WRAP(*b.ptr)->process(*src.ptr, *dst.ptr); END_WRAP } -void MergeMertens_Close(MergeMertensPtr b){CVD_FREE(b)} +void MergeMertens_Close(MergeMertensPtr b) +{ + b->ptr->reset(); + CVD_FREE(b) +} CvStatus AlignMTB_Create(AlignMTB *rval) { @@ -120,7 +124,11 @@ CvStatus AlignMTB_Process(AlignMTB b, VecMat src, VecMat *dst) *dst = {new std::vector(vec)}; END_WRAP } -void AlignMTB_Close(AlignMTBPtr b){CVD_FREE(b)} +void AlignMTB_Close(AlignMTBPtr b) +{ + b->ptr->reset(); + CVD_FREE(b) +} CvStatus DetailEnhance(Mat src, Mat dst, float sigma_s, float sigma_r) { diff --git a/src/stitching/stitching.cpp b/src/stitching/stitching.cpp index 1f821ce7..7dd85058 100644 --- a/src/stitching/stitching.cpp +++ b/src/stitching/stitching.cpp @@ -13,7 +13,11 @@ CvStatus Stitcher_Create(int mode, PtrStitcher *rval) END_WRAP } -void Stitcher_Close(PtrStitcherPtr stitcher){CVD_FREE(stitcher)} +void Stitcher_Close(PtrStitcherPtr stitcher) +{ + stitcher->ptr->reset(); + CVD_FREE(stitcher) +} CvStatus Stitcher_Get(PtrStitcher self, Stitcher *rval) { diff --git a/src/video/video.cpp b/src/video/video.cpp index a40a7721..5eec9685 100644 --- a/src/video/video.cpp +++ b/src/video/video.cpp @@ -23,7 +23,11 @@ CvStatus BackgroundSubtractorMOG2_CreateWithParams(int history, double varThresh cv::createBackgroundSubtractorMOG2(history, varThreshold, detectShadows))}; END_WRAP } -void BackgroundSubtractorMOG2_Close(BackgroundSubtractorMOG2Ptr self){CVD_FREE(self)} +void BackgroundSubtractorMOG2_Close(BackgroundSubtractorMOG2Ptr self) +{ + self->ptr->reset(); + CVD_FREE(self) +} CvStatus BackgroundSubtractorMOG2_Apply(BackgroundSubtractorMOG2 self, Mat src, Mat dst) { @@ -45,7 +49,11 @@ CvStatus BackgroundSubtractorKNN_CreateWithParams(int history, double dist2Thres cv::createBackgroundSubtractorKNN(history, dist2Threshold, detectShadows))}; END_WRAP } -void BackgroundSubtractorKNN_Close(BackgroundSubtractorKNNPtr self){CVD_FREE(self)} +void BackgroundSubtractorKNN_Close(BackgroundSubtractorKNNPtr self) +{ + self->ptr->reset(); + CVD_FREE(self) +} CvStatus BackgroundSubtractorKNN_Apply(BackgroundSubtractorKNN self, Mat src, Mat dst) { @@ -115,7 +123,11 @@ CvStatus TrackerMIL_Create(TrackerMIL *rval) *rval = {new cv::Ptr(cv::TrackerMIL::create())}; END_WRAP } -void TrackerMIL_Close(TrackerMILPtr self){CVD_FREE(self)} +void TrackerMIL_Close(TrackerMILPtr self) +{ + self->ptr->reset(); + CVD_FREE(self) +} CvStatus KalmanFilter_New(int dynamParams, int measureParams, int controlParams, int type, KalmanFilter *rval) {