1 package org.opencv.android;
3 import java.text.DecimalFormat;
5 import org.opencv.core.Core;
7 import android.graphics.Canvas;
8 import android.graphics.Color;
9 import android.graphics.Paint;
10 import android.util.Log;
12 public class FpsMeter {
13 private static final String TAG = "FpsMeter";
14 private static final int STEP = 20;
15 private static final DecimalFormat FPS_FORMAT = new DecimalFormat("0.00");
17 private int mFramesCounter;
18 private double mFrequency;
19 private long mprevFrameTime;
20 private String mStrfps;
22 boolean mIsInitialized = false;
28 mFrequency = Core.getTickFrequency();
29 mprevFrameTime = Core.getTickCount();
33 mPaint.setColor(Color.BLUE);
34 mPaint.setTextSize(20);
37 public void measure() {
38 if (!mIsInitialized) {
40 mIsInitialized = true;
43 if (mFramesCounter % STEP == 0) {
44 long time = Core.getTickCount();
45 double fps = STEP * mFrequency / (time - mprevFrameTime);
46 mprevFrameTime = time;
47 if (mWidth != 0 && mHeight != 0)
48 mStrfps = FPS_FORMAT.format(fps) + " FPS@" + Integer.valueOf(mWidth) + "x" + Integer.valueOf(mHeight);
50 mStrfps = FPS_FORMAT.format(fps) + " FPS";
56 public void setResolution(int width, int height) {
61 public void draw(Canvas canvas, float offsetx, float offsety) {
63 canvas.drawText(mStrfps, offsetx, offsety, mPaint);