OpenCVでカルマンフィルターの実装を取得しようとしているので、回転点の追跡の次の例(OpenCV 2.4.3)に従いました。
http://fossies.org/unix/misc/OpenCV-2.4.3.tar.gz:a/OpenCV-2.4.3/samples/cpp/kalman.cpp
OpenCV2.4.2とQtCreator4.7.4を使用しています。すべて正常にコンパイルされますが、実行すると、このコードの最後でプログラムがクラッシュします。
int main(int, char**)
{
help();
Mat img(500, 500, CV_8UC3);
KalmanFilter KF(2, 1, 0);
Mat state(2, 1, CV_32F); /* (phi, delta_phi) */
Mat processNoise(2, 1, CV_32F);
Mat measurement = Mat::zeros(1, 1, CV_32F);
char code = (char)-1;
for(;;)
{
randn( state, Scalar::all(0), Scalar::all(0.1) );
KF.transitionMatrix = *(Mat_<float>(2, 2) << 1, 1, 0, 1);
setIdentity(KF.measurementMatrix);
setIdentity(KF.processNoiseCov, Scalar::all(1e-5));
setIdentity(KF.measurementNoiseCov, Scalar::all(1e-1));
setIdentity(KF.errorCovPost, Scalar::all(1));
randn(KF.statePost, Scalar::all(0), Scalar::all(0.1));
for(;;)
{
Point2f center(img.cols*0.5f, img.rows*0.5f);
float R = img.cols/3.f;
double stateAngle = state.at<float>(0);
Point statePt = calcPoint(center, R, stateAngle);
Mat prediction = KF.predict(); //it crashes here
...
このチュートリアル(OpenCV 2.2)も試しましたが、同じ時点でクラッシュしました:.predict()関数:
QtCreatorはエラーコードを表示しないので、ここで何が起こっているのか理解できません。私は他の投稿をチェックしました、そして彼らは問題がマトリックスが同じサイズでないことであるかもしれないと言います、しかしこの例がそれを試みた他の人々のために働くので私は疑います...
誰かが私にこれを解決する方法についてのヒントを与えることができますか?
事前にどうもありがとうございました!!