繁体   English   中英

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

[英]FAST corner detection in android Opencv: Corner points not drawn

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

}

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

请帮助。 感谢您

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

希望这可以帮助。

我从此链接中找到的答案

问题出在Imgproc.cvtColor

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

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

现在它可以正常工作,并且消除了蓝色的问题

感谢您的回答

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM