我安装了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()
是唯一不内置的函数或变量。不存在transitionMatrix
,processNoiseCov
或measurementNoiseCov
。
有谁知道这里的问题是什么?
答案 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中的类型,但我无法让它工作!!!
源: