diff --git a/modules/features2d/src/matchers.cpp b/modules/features2d/src/matchers.cpp index a37ef0693..8d2f69ec8 100644 --- a/modules/features2d/src/matchers.cpp +++ b/modules/features2d/src/matchers.cpp @@ -1022,27 +1022,12 @@ FlannBasedMatcher::FlannBasedMatcher( const Ptr& _indexParam void FlannBasedMatcher::add( InputArrayOfArrays _descriptors ) { DescriptorMatcher::add( _descriptors ); - if(_descriptors.isUMatVector() || _descriptors.isUMat()) + std::vector descriptors; + _descriptors.getUMatVector(descriptors); + + for( size_t i = 0; i < descriptors.size(); i++ ) { - std::vector descriptors; - _descriptors.getUMatVector(descriptors); - for( size_t i = 0; i < descriptors.size(); i++ ) - { - addedDescCount += descriptors[i].rows; - } - } - else if(_descriptors.isMatVector() || _descriptors.isMat()) - { - std::vector descriptors; - _descriptors.getMatVector(descriptors); - for( size_t i = 0; i < descriptors.size(); i++ ) - { - addedDescCount += descriptors[i].rows; - } - } - else - { - CV_Assert( _descriptors.isUMat() || _descriptors.isUMatVector() || _descriptors.isMat() || _descriptors.isMatVector()); + addedDescCount += descriptors[i].rows; } } diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 974545994..2ffb609ca 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -190,9 +190,13 @@ public: void deallocate(UMatData* u) const { - if(u) + if(!u) + return; + PyEnsureGIL gil; + CV_Assert(u->urefcount >= 0); + CV_Assert(u->refcount >= 0); + if(u->refcount == 0) { - PyEnsureGIL gil; PyObject* o = (PyObject*)u->userdata; Py_XDECREF(o); delete u;