繁体   English   中英

Android OpenCV检测圈需要太多的FPS

[英]Android OpenCV Detecting Circles takes too much FPS

目前我正在开发一款可在Camera View中检测圈子的应用。 到目前为止,我能够编写一个代码,可以成功检测到Image中的圆圈。 现在我有这个代码,每帧都做同样的事情:

 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);降低相机的分辨率mOpenCvCameraView.setMaxFrameSize(640, 480);

我试过了,框架增加了7/8 fps; 我认为这是一个开始。

暂无
暂无

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

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