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

我认为问题出在DrawMatchesFlags 上,它是drawKeypoints函数中的最后一个输入。参考函数描述,您可以看到所有正在使用的标志。我建议您使用DrawMatchesFlags::DEFAULT如果您不想详细说。。

希望这可以帮助。

于 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 回答