2016-06-07 59 views
0

我已經安裝了OpenCv 2.4.8,並且大部分工作在Python 2.7(我在Ubuntu上)。OpenCV的卡爾曼濾波器缺少Matricies

一切似乎都與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' object has no attribute 'measurementMatrix'

事實上,dir(kalman)顯示,只有correct()predict()是唯一的功能或者未內置變量。沒有transitionMatrix,processNoiseCovmeasurementNoiseCov

有誰知道這裏的問題可能是什麼?

+1

你需要的OpenCV 3+使用卡爾曼濾波器對OpenCV的Python的:( – Berriel

回答

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(測量)→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

+0

我提到的變量是在文檔中。此外,我可以找到他們我安裝了OpenCV的。在我的Python 3上。 – Argon

+0

好的,所以我已經深入瞭解了一些東西 - 看到我的編輯 – Joseph

+0

我不明白,我不想安裝更多的軟件包,特別是如果它們可以變得多餘。我更喜歡解決爲什麼我沒有變量我應該 – Argon