android Opencv中的快速角点检测:未绘制角点

时间:2013-11-06 09:30:03

标签: java android opencv

我在Android中使用Opencv4Android 2.4.6尝试了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;

}

通过记录,我可以看到检测到许多关键点。但是没有在看到的中绘制。 我试图在视图中绘制的线也显示在视图中,但不显示在关键点上。

请帮助。 谢谢你

2 个答案:

答案 0 :(得分:2)

我认为问题出在 DrawMatchesFlags ,这是 drawKeypoints 函数中的最后一个输入..参考function description,你可以看到所有正在使用的标志..我建议你使用 DrawMatchesFlags :: DEFAULT ,如果你不想进入细节..

希望这有帮助。

答案 1 :(得分:2)

我从this link

找到了答案

问题在于Imgproc.cvtColor

  

问题是不幸的是,drawKeypoints()不能与RGBA Mats一起使用,它只接受8UC3和8UC1。   因此,如果您想调用drawKeypoints(),则需要将图片转换为RGB,然后再转换回RGBA进行显示。

所以我将代码更改为Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4);

现在工作正常,蓝色问题也被删除了

感谢您的回答