2013-04-24 17 views
6

Ho problemi utilizzando la libreria OpenCV Java correttamente, il seguente codice si blocca:OpenCV Android utilizzando MatOfKeyPoint e feature2d rilevare

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

ho pensato punti chiave è stato l'oggetto mutabile che mi passa nella funzione detect e ricevere indietro. Per esempio. più tardi mi piacerebbe fare:

Features2d.drawKeypoints(inputImage, keypoints, outputImage); 

Cosa sto facendo di sbagliato qui? Grazie.

risposta

9

Problema risolto: non solo è necessario convertire i tipi di colore, ma l'algoritmo SURF non è disponibile, almeno nella libreria che possiedo. Ecco il codice di lavoro:

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); 

Vorrei che restituito un errore di meglio che fatal signal 11 ...