【问题标题】:FAST corner detection in android Opencv: Corner points not drawnandroid Opencv中的快速角检测:未绘制角点
【发布时间】:2013-11-06 18:59:17
【问题描述】:

我尝试使用 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;

}

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

请帮忙。 谢谢你

【问题讨论】:

    标签: java android opencv


    【解决方案1】:

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我从this link找到的答案

      问题在于Imgproc.cvtColor

      问题是很遗憾 drawKeypoints() 不能与 RGBA Mats 一起使用,它只接受 8UC3 和 8UC1。 所以如果你想调用drawKeypoints(),你需要将图片转换为RGB,然后再转换回RGBA显示。

      所以我把代码改成了Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4);

      现在可以正常使用了,蓝色的问题也解决了

      感谢您的回答

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 2017-05-31
        相关资源
        最近更新 更多