Wraps smart pointers properly
authorHamdi Sahloul <hamdisahloul@hotmail.com>
Fri, 31 Mar 2017 18:19:29 +0000 (03:19 +0900)
committerHamdi Sahloul <hamdisahloul@hotmail.com>
Fri, 31 Mar 2017 18:19:29 +0000 (03:19 +0900)
modules/python/src2/cv2.cpp

index 9c28c70..4788ef1 100644 (file)
@@ -1271,9 +1271,17 @@ PyObject* pyopencv_from(const Moments& m)
                          "nu30", m.nu30, "nu21", m.nu21, "nu12", m.nu12, "nu03", m.nu03);
 }
 
+template<typename T>
+PyObject* pyopencv_from(const cv::Ptr<T>& p)
+{
+    if (!p) return Py_None;
+    return pyopencv_from(*p);
+}
+
 template <typename T>
 bool pyopencv_to(PyObject *o, Ptr<T>& p, const char *name)
 {
+    if (!o || o == Py_None) return true;
     p = makePtr<T>();
     return pyopencv_to(o, *p, name);
 }