NumpyAllocator: check reference count before actual release, revert flann changes
This commit is contained in:
@@ -1022,27 +1022,12 @@ FlannBasedMatcher::FlannBasedMatcher( const Ptr<flann::IndexParams>& _indexParam
|
|||||||
void FlannBasedMatcher::add( InputArrayOfArrays _descriptors )
|
void FlannBasedMatcher::add( InputArrayOfArrays _descriptors )
|
||||||
{
|
{
|
||||||
DescriptorMatcher::add( _descriptors );
|
DescriptorMatcher::add( _descriptors );
|
||||||
if(_descriptors.isUMatVector() || _descriptors.isUMat())
|
std::vector<UMat> descriptors;
|
||||||
|
_descriptors.getUMatVector(descriptors);
|
||||||
|
|
||||||
|
for( size_t i = 0; i < descriptors.size(); i++ )
|
||||||
{
|
{
|
||||||
std::vector<UMat> descriptors;
|
addedDescCount += descriptors[i].rows;
|
||||||
_descriptors.getUMatVector(descriptors);
|
|
||||||
for( size_t i = 0; i < descriptors.size(); i++ )
|
|
||||||
{
|
|
||||||
addedDescCount += descriptors[i].rows;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(_descriptors.isMatVector() || _descriptors.isMat())
|
|
||||||
{
|
|
||||||
std::vector<Mat> 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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -190,9 +190,13 @@ public:
|
|||||||
|
|
||||||
void deallocate(UMatData* u) const
|
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;
|
PyObject* o = (PyObject*)u->userdata;
|
||||||
Py_XDECREF(o);
|
Py_XDECREF(o);
|
||||||
delete u;
|
delete u;
|
||||||
|
Reference in New Issue
Block a user