Android OpenCV Detection Circles需要太多的FPS



目前,我正在开发一个可以在相机视图中检测圆圈的应用程序。到目前为止,我能够编写一个成功检测图像中的圆圈的代码。现在我有这段代码,每帧都做同样的事情:

 public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    mat = inputFrame.rgba();
    grayMat = inputFrame.gray();    
        Imgproc.GaussianBlur(grayMat, grayMat, new Size(9, 9), 2, 2);
        Imgproc.HoughCircles(grayMat, circles,
                Imgproc.CV_HOUGH_GRADIENT, dp, minDist, param1,
                param2, minRadius, maxRadius);
        int numberOfCircles = (circles.rows() == 0) ? 0 : circles.cols();
        for (int i=0; i<numberOfCircles; i++) {
            double[] circleCoordinates = circles.get(0, i);
            int x = (int) circleCoordinates[0], y = (int) circleCoordinates[1];
        Point center = new Point(x, y);
            int radius = (int) circleCoordinates[2];           
            Core.circle(mat, center, radius, new Scalar(0,
                    255, 0), 4);      
            Core.rectangle(mat, new Point(x - 5, y - 5),
                    new Point(x + 5, y + 5),
                    new Scalar(0, 128, 255), -1);
        }   
        return mat;
}

正在检测圆圈,但问题是它花费的时间太长了。事实上,当我调用一个空onCameraFrame时,它只返回rgba,我有 14+ fps,但是当我使用上面的完整代码时,fps 急剧下降。最大为 1 帧。它显示了很多误报。那么很多应用程序如何检测圆圈甚至面部,而不会降低任何 fps?提前谢谢。

我有同样的问题,我找到了这个 http://android.phonesdevelopers.com/553_20483346/,它建议将相机的分辨率降低mOpenCvCameraView.setMaxFrameSize(640, 480); .

我已经尝试过,帧以 7/8 fps 的速度增加;我认为这是一个开始。

相关内容

  • 没有找到相关文章

最新更新