Add python bindings for `Rect2f` and `Point3i`

pull/24857/head
Zhi-Qiang Zhou 1 year ago committed by GitHub
parent 2791bb7062
commit fefc7e3749
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 30
      modules/python/src2/cv2_convert.cpp
  2. 4
      modules/python/src2/cv2_convert.hpp
  3. 2
      modules/python/src2/typing_stubs_generation/predefined_types.py

@ -797,6 +797,21 @@ PyObject* pyopencv_from(const Rect& r)
return Py_BuildValue("(iiii)", r.x, r.y, r.width, r.height);
}
template<>
bool pyopencv_to(PyObject* obj, Rect2f& r, const ArgInfo& info)
{
RefWrapper<float> values[] = {
RefWrapper<float>(r.x), RefWrapper<float>(r.y),
RefWrapper<float>(r.width), RefWrapper<float>(r.height)};
return parseSequence(obj, values, info);
}
template<>
PyObject* pyopencv_from(const Rect2f& r)
{
return Py_BuildValue("(ffff)", r.x, r.y, r.width, r.height);
}
template<>
bool pyopencv_to(PyObject* obj, Rect2d& r, const ArgInfo& info)
{
@ -964,6 +979,21 @@ PyObject* pyopencv_from(const Point2d& p)
return Py_BuildValue("(dd)", p.x, p.y);
}
template<>
bool pyopencv_to(PyObject* obj, Point3i& p, const ArgInfo& info)
{
RefWrapper<int> values[] = {RefWrapper<int>(p.x),
RefWrapper<int>(p.y),
RefWrapper<int>(p.z)};
return parseSequence(obj, values, info);
}
template<>
PyObject* pyopencv_from(const Point3i& p)
{
return Py_BuildValue("(iii)", p.x, p.y, p.z);
}
template<>
bool pyopencv_to(PyObject* obj, Point3f& p, const ArgInfo& info)
{

@ -214,6 +214,8 @@ template<> PyObject* pyopencv_from(const cv::Size_<float>& sz);
// --- Rect
template<> bool pyopencv_to(PyObject* obj, cv::Rect& r, const ArgInfo& info);
template<> PyObject* pyopencv_from(const cv::Rect& r);
template<> bool pyopencv_to(PyObject* obj, cv::Rect2f& r, const ArgInfo& info);
template<> PyObject* pyopencv_from(const cv::Rect2f& r);
template<> bool pyopencv_to(PyObject* obj, cv::Rect2d& r, const ArgInfo& info);
template<> PyObject* pyopencv_from(const cv::Rect2d& r);
@ -232,6 +234,8 @@ template<> bool pyopencv_to(PyObject* obj, cv::Point2f& p, const ArgInfo& info);
template<> PyObject* pyopencv_from(const cv::Point2f& p);
template<> bool pyopencv_to(PyObject* obj, cv::Point2d& p, const ArgInfo& info);
template<> PyObject* pyopencv_from(const cv::Point2d& p);
template<> bool pyopencv_to(PyObject* obj, cv::Point3i& p, const ArgInfo& info);
template<> PyObject* pyopencv_from(const cv::Point3i& p);
template<> bool pyopencv_to(PyObject* obj, cv::Point3f& p, const ArgInfo& info);
template<> PyObject* pyopencv_from(const cv::Point3f& p);
template<> bool pyopencv_to(PyObject* obj, cv::Point3d& p, const ArgInfo& info);

@ -71,6 +71,8 @@ _PREDEFINED_TYPES = (
doc="Required length is 4"),
AliasTypeNode.sequence_("Rect2i", PrimitiveTypeNode.int_(),
doc="Required length is 4"),
AliasTypeNode.sequence_("Rect2f", PrimitiveTypeNode.float_(),
doc="Required length is 4"),
AliasTypeNode.sequence_("Rect2d", PrimitiveTypeNode.float_(),
doc="Required length is 4"),
AliasTypeNode.dict_("Moments", PrimitiveTypeNode.str_("Moments::key"),

Loading…
Cancel
Save