mirror of
https://github.com/opencv/opencv.git
synced 2026-07-28 23:03:03 +04:00
Merge branch '4.x' into '5.x'
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -18,7 +18,7 @@ public:
|
||||
const cv::MatAllocator* stdAllocator;
|
||||
};
|
||||
|
||||
extern NumpyAllocator g_numpyAllocator;
|
||||
inline NumpyAllocator& GetNumpyAllocator() {static NumpyAllocator gNumpyAllocator;return gNumpyAllocator;}
|
||||
|
||||
//======================================================================================================================
|
||||
|
||||
|
||||
@@ -515,9 +515,9 @@ class CppHeaderParser(object):
|
||||
if rettype == classname or rettype == "~" + classname:
|
||||
rettype, funcname = "", rettype
|
||||
else:
|
||||
if bool(re.match('\w+\s+\(\*\w+\)\s*\(.*\)', decl_str)):
|
||||
if bool(re.match(r'\w+\s+\(\*\w+\)\s*\(.*\)', decl_str)):
|
||||
return [] # function typedef
|
||||
elif bool(re.match('\w+\s+\(\w+::\*\w+\)\s*\(.*\)', decl_str)):
|
||||
elif bool(re.match(r'\w+\s+\(\w+::\*\w+\)\s*\(.*\)', decl_str)):
|
||||
return [] # class method typedef
|
||||
elif bool(re.match('[A-Z_]+', decl_start)):
|
||||
return [] # it seems to be a macro instantiation
|
||||
|
||||
@@ -325,6 +325,7 @@ def _find_argument_index(arguments: Sequence[FunctionNode.Arg],
|
||||
NODES_TO_REFINE = {
|
||||
SymbolName(("cv", ), (), "resize"): make_optional_arg("dsize"),
|
||||
SymbolName(("cv", ), (), "calcHist"): make_optional_arg("mask"),
|
||||
SymbolName(("cv", ), (), "floodFill"): make_optional_arg("mask"),
|
||||
}
|
||||
|
||||
ERROR_CLASS_PROPERTIES = (
|
||||
|
||||
@@ -194,6 +194,13 @@ _PREDEFINED_TYPES = (
|
||||
export_name="ExtractMetaCallback"
|
||||
),
|
||||
AliasTypeNode.class_("LayerId", "DictValue"),
|
||||
AliasTypeNode.dict_("LayerParams",
|
||||
key_type=PrimitiveTypeNode.str_(),
|
||||
value_type=UnionTypeNode("DictValue", items=(
|
||||
PrimitiveTypeNode.int_(),
|
||||
PrimitiveTypeNode.float_(),
|
||||
PrimitiveTypeNode.str_())
|
||||
)),
|
||||
PrimitiveTypeNode.int_("cvflann_flann_distance_t"),
|
||||
PrimitiveTypeNode.int_("flann_flann_distance_t"),
|
||||
PrimitiveTypeNode.int_("cvflann_flann_algorithm_t"),
|
||||
|
||||
Reference in New Issue
Block a user