OpenCV的卡尔曼滤波器缺少Matricies

时间:2016-06-07 08:28:15

标签: python opencv kalman-filter

我安装了OpenCv 2.4.8,并且在大多数情况下,使用Python 2.7(我在Ubuntu上)。

OpenCv似乎一切正常。但是,以下代码

import numpy as np
kalman = cv2.KalmanFilter(4,2)
kalman.measurementMatrix = np.array([[1,0,0,0],[0,1,0,0]],np.float32)

给了我这个错误:

  

AttributeError:' cv2.KalmanFilter'对象没有属性   ' measurementMatrix'

确实,dir(kalman)表明只有correct()predict()是唯一不内置的函数或变量。不存在transitionMatrixprocessNoiseCovmeasurementNoiseCov

有谁知道这里的问题是什么?

1 个答案:

答案 0 :(得分:0)

所以,你需要做的是获取pyKalman而不是使用opencv。从我的快速搜索中,你提到的所有opencv都可以提到:

'KERNEL_SYMMETRICAL', 'KMEANS_PP_CENTERS', 'KMEANS_RANDOM_CENTERS', 'KMEANS_USE_INITIAL_LABELS', 'KNearest', 'KalmanFilter', 'KeyPoint', 'LEV_MARQ_CALC_J', 'LEV_MARQ_CHECK_ERR', 'LEV_MARQ_DONE', 'LEV_MARQ_STARTED', 'LMEDS', 'LUT', 'Laplacian', 'MAGIC_MASK',

您也可以实施自己的定义。

请阅读以下内容: http://filterpy.readthedocs.io/en/latest/kalman/KalmanFilter.html https://arxiv.org/ftp/arxiv/papers/1204/1204.0375.pdf Is there any example of cv2.KalmanFilter implementation?

抱歉,我无法解决所有问题。

<强> - 编辑 -

根据您可能使用的文档:

cv2.KalmanFilter.correct(measurement)→retval

import numpy as np
import cv2
import cv2.cv as cv

kalman = cv2.KalmanFilter(4,2)
X = np.array([[1,0,0,0],[0,1,0,0]],np.float32)
Y=kalman.correct(X)

我注意到的第一个问题是在定义了卡尔曼滤波器的第一行之后,我的变量资源管理器中没有显示这样的滤波器。 numpy数组确实显示但它让我对卡尔曼感到好奇。

此外,当我使用Y = Kalman.correct(X)时,尺寸存在问题,但至少距离更近一步。我也觉得奇怪的是文档说我可以定义一个CV_32F或CV_64F,作为KalmanFilter中的类型,但我无法让它工作!!!

源:

http://docs.opencv.org/2.4/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=kalman%20python#cv.CreateKalman