我想实现一个卡尔曼滤波器来跟踪一个点,这是我的代码
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
switch (viewMode) {
case VIEW_MODE_ColorDetect:
/**
*
* some code for color detect
*
*/
int ObjectCenterX = (int)((mboundingRect.tl().x + mboundingRect.br().x) / 2);
int ObjectCenterY = (int)((mboundingRect.tl().y + mboundingRect.br().y) / 2);
//get the object center point , and I whant to track it by kalman filter.
Core.circle(mRgba, new Point(ObjectCenterX, ObjectCenterY), 5, ColorGreen, 2);
/***********************************************Kalman************************************************************/
try {
Mat ObjectPoint = new Mat(1, 2, CvType.CV_32F);
int[] PreObjectCenter = {ObjectCenterX, ObjectCenterY};
ObjectPoint.put(0, 0, PreObjectCenter[0]);
ObjectPoint.put(0, 1, PreObjectCenter[1]);
ObjectPoint = myKalmanFilter(ObjectPoint);
/**Question 2: How to get corrected point from Mat?**/
} catch (Exception e) {
Log.e("In camera fram: ", e.toString());
}
/*****************************************************************************************************************/
}
return mRgba;
return mRgba;
}
private Mat myKalmanFilter(Mat objectPoint){
KalmanFilter KF = new KalmanFilter();
try {
KF.predict(objectPoint);
KF.correct(objectPoint);
} catch (Exception e) {
Log.e("myKalmanFilter: ", e.toString());
}
return objectPoint;
}
我有2个问题,第1题。我收到此代码以下错误:
Q2。修改了可以工作的代码后,如何从Mat中获取x和y点?
编辑:
我仍然不知道如何设置KalmanFilter尺寸,我像这样设置
private KalmanFilter KF = new KalmanFilter(1, 2, 16, CvType.CV_32F);
和eclipse show最佳答案