0

Opencv4Android 2.4.6 を使用して、Android で FAST コーナー検出を試みました。キーポイントが検出されたが、ビューに描画されたキーポイントが表示されない、または

Features2d.drawKeypoints 

動作していません、わかりません。

public Mat onCameraFrame(Mat inputFrame) {


      MatOfKeyPoint points = new MatOfKeyPoint();


      Mat mat = inputFrame;
      FeatureDetector fast = FeatureDetector.create(FeatureDetector.FAST);
      fast.detect(mat, points);


  Scalar redcolor = new Scalar(255,0,0);
  Mat mRgba= mat.clone();
  Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2BGRA,4);
  Core.line(mRgba, new Point(100, 100), new Point(300,300), new Scalar(0, 0, 255));

  Features2d.drawKeypoints(mRgba, points, mRgba, redcolor, 3);


  return mRgba;

}

ログを記録すると、多くのキーポイントが検出されていることがわかりますが、表示されていません。ビューに描画しようとした線もビューに表示されますが、キーポイントは表示されません。

助けてください。ありがとう

4

2 に答える 2

2

問題は、 drawKeypoints関数の最後の入力であるDrawMatchesFlagsにあると思います。関数の説明を参照すると、使用されているすべてのフラグを確認できます。詳細に入りたくない..

お役に立てれば。

于 2013-11-06T10:25:38.947 に答える
2

このリンクから見つけた答え

問題はにありましたImgproc.cvtColor

問題は、残念ながら drawKeypoints() が RGBA Mats で動作せず、8UC3 と 8UC1 のみを受け入れることです。したがって、drawKeypoints() を呼び出したい場合は、画像を RGB に変換してから RGBA に戻して表示する必要があります。

だから私はコードをImgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4);

現在は正常に動作しており、青みがかった問題も解消されています

答えてくれてありがとう

于 2013-11-06T10:59:17.847 に答える