JDS
JDS

Reputation: 16978

Android OpenCV using MatOfKeyPoint and feature2d detect

I'm having trouble using the OpenCV Java library properly, the following code is crashing:

MatOfKeyPoint keypoints = new MatOfKeyPoint();
this.myFeatures.detect(inputImage, keypoints);

I thought keypoints was this mutable object that I pass into the detect function and receive back. E.g. later I would like to do:

Features2d.drawKeypoints(inputImage, keypoints, outputImage);

What am I doing wrong here? Thanks.

Upvotes: 7

Views: 2874

Answers (1)

JDS
JDS

Reputation: 16978

Issue resolved - not only do you have to convert color types, but the SURF algorithm isn't available, at least in the library I have. Here's the working code:

myFeatures = FeatureDetector.create(FeatureDetector.FAST);
rgb = new Mat();
outputImage = new Mat();
keypoints = new MatOfKeyPoint();

Imgproc.cvtColor(inputImage, rgb, Imgproc.COLOR_RGBA2RGB);
myFeatures.detect(rgb, keypoints);
Features2d.drawKeypoints(rgb, keypoints, rgb);
Imgproc.cvtColor(rgb, outputImage, Imgproc.COLOR_RGB2RGBA);

I wish they returned an error better than fatal signal 11...

Upvotes: 10

Related Questions