OpenCV4Android conversion from MatOfKeyPoint to MatOfPoint2f
I am trying to use OpenCV for Android (OpenCV 2.4.3) I am writing a program to track keypoints. I am trying to use FeatureDetector to detect keypoints and then Video.calcOpticalFlowPyrLK to track them. The question that has me stumped is that the FeatureDetector function returns a MatOfKeyPoint while calcOpticalFlowPyrLK takes a MatOfPoint2f.
Here is my code so far:
//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?
Things I have tried unsuccessfully so far:
keypoints.convertTo()
- Creating a vector from keypoints and then
trying to populate a vector of Point Vector pointList. Then typecast to
MatOfPoint2f
when calling flow funciton (MatOfPoint2f
) pointList - Trying to populate a
MatOfPoint2f
from scratch. Cant figure out how to do this 4 UsingfromArray
method inMatOfPoint2f
- Not sure what this method does. Documentation is blank for this method. Am I missing something obvious?