]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
Kalman first cut
authorjamesb <jamesb@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Wed, 10 Mar 2010 21:52:11 +0000 (21:52 +0000)
committerjamesb <jamesb@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Wed, 10 Mar 2010 21:52:11 +0000 (21:52 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2780 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/interfaces/python/api
opencv/interfaces/python/cv.cpp
opencv/interfaces/python/gen.py
opencv/tests/python/test.py

index 3fd3386e51070ab41feed95d56ce1ba13830846d..d9b42e172b2a4a44741ae9c0a3019301ae448e75 100644 (file)
@@ -1457,9 +1457,12 @@ CreateKalman CvKalman*
   int dynam_params
   int measure_params
   int control_params 0
-KalmanCorrect constCvMat*
+KalmanCorrect ROCvMat*
   CvKalman* kalman
   CvMat measurement
+KalmanPredict ROCvMat*
+  CvKalman* kalman
+  CvMat control NULL
 SnakeImage
   IplImage image
   CvPoints points
index 580f4e54b253b21fb6edeb261d026808bccb74d8..b0466c79a9ee48c844ef3125b65873813b98946a 100644 (file)
@@ -89,6 +89,7 @@ struct cvlineiterator_t {
 };
 
 typedef IplImage ROIplImage;
+typedef const CvMat ROCvMat;
 
 struct cvmoments_t {
   PyObject_HEAD
@@ -119,6 +120,7 @@ static int convert_to_CvMat(PyObject *o, CvMat **dst, const char *name = "no_nam
 static int convert_to_CvMatND(PyObject *o, CvMatND **dst, const char *name = "no_name");
 static PyObject *what_data(PyObject *o);
 static PyObject *FROM_CvMat(CvMat *r);
+static PyObject *FROM_ROCvMatPTR(ROCvMat *r);
 
 static void translate_error_to_exception(void)
 {
@@ -2414,6 +2416,20 @@ static PyObject *FROM_ROIplImagePTR(ROIplImage *r)
   }
 }
 
+static PyObject *FROM_ROCvMatPTR(ROCvMat *r)
+{
+  if (r != NULL) {
+    cvmat_t *cva = PyObject_NEW(cvmat_t, &cvmat_Type);
+    cva->a = cvCreateMatHeader(100, 100, CV_8U);
+    *(cva->a) = *r;
+    cva->data = PyBuffer_FromReadWriteMemory(r->data.ptr, r->rows * r->step);
+    cva->offset = 0;
+    return (PyObject*)cva;
+  } else {
+    Py_RETURN_NONE;
+  }
+}
+
 static PyObject *FROM_CvMatPTR(CvMat *r)
 {
   cvmat_t *cvm = PyObject_NEW(cvmat_t, &cvmat_Type);
index 254bc21598385f8667f1ddb0416494cbb6167751..f4b46f5effe01cd604e295f23aa11ef05470bb17 100644 (file)
@@ -251,6 +251,7 @@ def gen(name, args, ty):
       'IplImage*',
       'CvMat*',
       'constCvMat*',
+      'ROCvMat*',
       'CvMatND*',
       'CvPoint2D32f_4',
       'CvRNG',
@@ -468,32 +469,46 @@ objects = [
         "MP" : 'i',
         "DP" : 'i',
         "CP" : 'i',
-        "state_pre" : 'm',
+        "state_pre" : 'mr',
+        "state_post" : 'mr',
+        "transition_matrix" : 'mr',
+        "control_matrix" : 'mr',
+        "measurement_matrix" : 'mr',
+        "control_matrix" : 'mr',
+        "process_noise_cov" : 'mr',
+        "measurement_noise_cov" : 'mr',
+        "error_cov_pre" : 'mr',
+        "gain" : 'mr',
+        "error_cov_post" : 'mr',
     }),
 ]
 
 checkers = {
     'i' : 'PyNumber_Check',
     'f' : 'PyNumber_Check',
-    'm' : 'is_cvmat'
+    'm' : 'is_cvmat',
+    'mr' : 'is_cvmat'
 }
 # Python -> C
 converters = {
     'i' : 'PyInt_AsLong',
     'f' : 'PyFloat_AsDouble',
-    'm' : 'PyCvMat_AsCvMat'
+    'm' : 'PyCvMat_AsCvMat',
+    'mr' : 'PyCvMat_AsCvMat'
 }
 # C -> Python
 rconverters = {
     'i' : 'PyInt_FromLong',
     'f' : 'PyFloat_FromDouble',
-    'm' : 'FROM_CvMat'
+    'm' : 'FROM_CvMat',
+    'mr' : 'FROM_ROCvMatPTR'
 }
 # Human-readable type names
 typenames = {
     'i' : 'integer',
     'f' : 'float',
-    'm' : 'list of CvMat'
+    'm' : 'list of CvMat',
+    'mr' : 'list of CvMat',
 }
 
 for (t, members) in objects:
index b61de0da220aedceb00291f397e21294aa900e0e..ddf5f177adf5c68e8b39a014313a6509e66d43eb 100644 (file)
@@ -772,7 +772,6 @@ class AreaTests(OpenCVTests):
 
     def test_kalman(self):
         k = cv.CreateKalman(2, 1, 0)
-        print dir(k)
 
     def failing_test_exception(self):
         a = cv.CreateImage((640, 480), cv.IPL_DEPTH_8U, 1)