1

Android 用の OpenCV (OpenCV 2.4.3) を使用しようとしています キーポイントを追跡するプログラムを作成しています。FeatureDetector を使用してキーポイントを検出し、次に Video.calcOpticalFlowPyrLK を使用してそれらを追跡しようとしています。私が困惑したのは、FeatureDetector 関数が MatOfKeyPoint を返し、calcOpticalFlowPyrLK が MatOfPoint2f を受け取るということです。

MatOfKeyPoint は MatOfPoint とは異なることに注意してください (MatOfPoint から MatOfPont2f への変換は簡単です)。

これまでの私のコードは次のとおりです。

//Feature detector for LKT flow estimation
FeatureDetector cvFeatureDetector;
//Vector of keypoints
MatOfKeyPoint keypoints;

...
...

//intitialize detector
cvFeatureDetector = FeatureDetector.create(FeatureDetector.GFTT);

keypoints = new MatOfKeyPoint();

...
...

//mPrevImgMat is a grayscale image - previous frame
//mCurrentImgMat is a grayscale image - current frame

//Run feature detector in previous image
cvFeatureDetector.detect(mPrevImgMat, keypoints);

MatOfPoint2f keypointsFound = new MatOfPoint2f();
MatOfByte keypointsStatus = new MatOfByte();
MatOfFloat err = new MatOfFloat();
Size winSize = new Size(25,25);
int maxLevel = 3;

//Optical flow to find keypoints in current image
Video.calcOpticalFlowPyrLK(mPrevImgMat, mCurrentImgMat, keypoints,
            keypointsFound, keypointsStatus, err, winSize, maxLevel);

//Obviously "keypoints" in the line above does not work. How does one covert
//keypoints to MatOfPoint2f?

これまでに失敗したこと: (1) keypoints.convertTo() (2) キーポイントからベクトルを作成し、次に Point Vector pointList のベクトルを設定しようとしています。次に、フロー機能を呼び出すときに MatOfPoint2f に型キャストします (MatOfPoint2f) pointList (3) MatOfPoint2f を最初から作成しようとしています。これを行う方法がわかりません (4) MatOfPoint2f で fromArray メソッドを使用する - このメソッドが何をするのかわかりません。このメソッドのドキュメントは空白です。明らかな何かが欠けていますか?

4

1 に答える 1

0

自分の質問に答える...別のフォーラムで答えを得ました。その議論へのリンクは以下にあります http://www.answers.opencv.org/question/6206/opencv4android-conversion-from-matofkeypoint-to/

于 2013-01-18T15:39:52.250 に答える