私はこの機能を動作させることができません。基本的に私は、機能の検出と参照画像とのマッチングを行っています。私は入力画像の上にマッチしたフィーチャーをオーバーレイしたい。私のコードは次のとおりです。Android OpenCV:feature2dと一致する図面
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;
}
これは特に問題の2d.drawMatchesです。私が得たAndroidのエラーによると、いくつかの次元は並んでいません。真実が言われても、どこにもドキュメンテーションがないので、drawMatches
がAndroidでどのように動作するのかわからない。
私ができることをしたいのは、inputImageの上にマッチを描画することです。私はFeature2d.drawKeypoints
を稼働させましたが、MatOfDMatch matches
をMatOfKeypoint
オブジェクトに変換する方法は不明です。 MatOfDMatchがどのように動作するのかもわかりません - ディスクリプタに対応する内部にはいくつかの結合性がありませんか?
残念ながら、私はAndroidでOpenCVを使用するのは本当に苦労しています。そこにあるC++のドキュメントは良いですが、Androidの素材にはほとんどありません。助けてくれてありがとう!
これまでのところありがとうございます。私はimageOut = inputImage.clone()を使い始めました。これによってdrawMatchesが動作します。しかし、私はこのイメージを返すようにしています。ユーザーがカメラで見るものと同じですが、寸法はわずかに異なります。640 * 480のカメラ解像度ではなく、704 * 480です。テンプレート画像の幅が64であることを考えると、drawMatchesはそれらを並べて配置しているように見えます。入力画像上の一致する領域に矩形などを表示できますか? – JDS
はい私はそう思います。 list matches_list = matches.toList(); List kp_list = keypoints.toList(); 'をリストし、' kp_list.get(matches_list.get(i).queryIdx) 'リストを反復処理するためにマッチとキーポイントを変換するあなたの長方形を定義する2つの点に出会うために、一致するキーポイントの最小値と最大値XとYを求めます。次に、Rectangle = Rect(新しい点(minX、minY)、新しい点(maxX、maxY)) 'を定義し、' Mat imageFinal = new Mat(inputImage、roi);を実行するだけで、マッチした領域 –
andriy