Android OpenCV: desenho de correspondências com feature2d
Eu não consigo fazer essa função funcionar. Basicamente eu estou fazendo a detecção de recursos e combinando com uma imagem de referência. Eu quero sobrepor os recursos correspondentes no topo da minha imagem de entrada. Aqui está o meu código:
public Mat startProcessing(Mat inputImage) {
Imgproc.cvtColor(inputImage, rgb, Imgproc.COLOR_GRAY2RGB);
myFeatures.detect(rgb, keypoints);
descriptorExtractor.compute(inputImage, keypoints, imageDescriptors);
descriptorMatcher.match(templateDescriptors, imageDescriptors, matches);
Features2d.drawMatches(rgb, keypoints, templateImage, templateKeypoints, matches, rgb);
Imgproc.cvtColor(rgb, outputImage, Imgproc.COLOR_RGB2RGBA);
return outputImage;
}
É Features2d.drawMatches, que é especificamente o problema. De acordo com o erro do Android, algumas dimensões não estão alinhadas. Verdade seja dita, eu nem sei comodrawMatches
é suposto trabalhar no Android porque não há documentação em qualquer lugar.
O que eu quero fazer é desenhar as correspondências na parte superior do inputImage. Eu pegueiFeature2d.drawKeypoints
para trabalhar, mas não tenho certeza de como eu iria sobre a conversãoMatOfDMatch matches
para umMatOfKeypoint
objeto. Também não tenho certeza se é assim que funciona o MatOfDMatch - não tem alguma associatividade dentro dele correspondente aos descritores?
Desculpe por estar em todo lugar, estou tendo muita dificuldade em usar o OpenCV com Android. A documentação do C ++ por aí é boa, mas há pouco no caminho dos materiais do Android. Obrigado por qualquer ajuda!