Skip to content

Commit

Permalink
Replace static numpy allocator by function containing static.
Browse files Browse the repository at this point in the history
That enables the numpy code to be its own library, in case
some users want to (e.g. CLIF library).
  • Loading branch information
vrabaud committed Apr 26, 2024
1 parent 2cd3304 commit 8f7e55a
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 9 deletions.
2 changes: 1 addition & 1 deletion modules/core/misc/python/pyopencv_umat.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ static void* cv_UMat_context()
static Mat cv_UMat_get(const UMat* _self)
{
Mat m;
m.allocator = &g_numpyAllocator;
m.allocator = &GetNumpyAllocator();
_self->copyTo(m);
return m;
}
Expand Down
10 changes: 5 additions & 5 deletions modules/python/src2/cv2_convert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ bool pyopencv_to(PyObject* o, Mat& m, const ArgInfo& info)
if(!o || o == Py_None)
{
if( !m.data )
m.allocator = &g_numpyAllocator;
m.allocator = &GetNumpyAllocator();
return true;
}

Expand Down Expand Up @@ -298,14 +298,14 @@ bool pyopencv_to(PyObject* o, Mat& m, const ArgInfo& info)
#endif

m = Mat(ndims, size, type, PyArray_DATA(oarr), step);
m.u = g_numpyAllocator.allocate(o, ndims, size, type, step);
m.u = GetNumpyAllocator().allocate(o, ndims, size, type, step);
m.addref();

if( !needcopy )
{
Py_INCREF(o);
}
m.allocator = &g_numpyAllocator;
m.allocator = &GetNumpyAllocator();

return true;
}
Expand All @@ -316,9 +316,9 @@ PyObject* pyopencv_from(const cv::Mat& m)
if( !m.data )
Py_RETURN_NONE;
cv::Mat temp, *p = (cv::Mat*)&m;
if(!p->u || p->allocator != &g_numpyAllocator)
if(!p->u || p->allocator != &GetNumpyAllocator())
{
temp.allocator = &g_numpyAllocator;
temp.allocator = &GetNumpyAllocator();
ERRWRAP2(m.copyTo(temp));
p = &temp;
}
Expand Down
2 changes: 0 additions & 2 deletions modules/python/src2/cv2_numpy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
#include "cv2_numpy.hpp"
#include "cv2_util.hpp"

NumpyAllocator g_numpyAllocator;

using namespace cv;

UMatData* NumpyAllocator::allocate(PyObject* o, int dims, const int* sizes, int type, size_t* step) const
Expand Down
2 changes: 1 addition & 1 deletion modules/python/src2/cv2_numpy.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class NumpyAllocator : public cv::MatAllocator
const cv::MatAllocator* stdAllocator;
};

extern NumpyAllocator g_numpyAllocator;
inline NumpyAllocator& GetNumpyAllocator() {static NumpyAllocator gNumpyAllocator;return gNumpyAllocator;}

//======================================================================================================================

Expand Down

0 comments on commit 8f7e55a

Please sign in to comment.