[英]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.