Commit fef7509e authored by Maksim Shabunin's avatar Maksim Shabunin

NumpyAllocator: check reference count before actual release, revert flann changes

parent 26d9a7cd
...@@ -1022,28 +1022,13 @@ FlannBasedMatcher::FlannBasedMatcher( const Ptr<flann::IndexParams>& _indexParam ...@@ -1022,28 +1022,13 @@ 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; std::vector<UMat> descriptors;
_descriptors.getUMatVector(descriptors); _descriptors.getUMatVector(descriptors);
for( size_t i = 0; i < descriptors.size(); i++ ) for( size_t i = 0; i < descriptors.size(); i++ )
{ {
addedDescCount += descriptors[i].rows; 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());
}
} }
void FlannBasedMatcher::clear() void FlannBasedMatcher::clear()
......
...@@ -190,9 +190,13 @@ public: ...@@ -190,9 +190,13 @@ public:
void deallocate(UMatData* u) const void deallocate(UMatData* u) const
{ {
if(u) if(!u)
{ return;
PyEnsureGIL gil; PyEnsureGIL gil;
CV_Assert(u->urefcount >= 0);
CV_Assert(u->refcount >= 0);
if(u->refcount == 0)
{
PyObject* o = (PyObject*)u->userdata; PyObject* o = (PyObject*)u->userdata;
Py_XDECREF(o); Py_XDECREF(o);
delete u; delete u;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment