--- /dev/null
+package org.opencv.samples.fd;
+
+import java.text.DecimalFormat;
+
+import org.opencv.core;
+
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.Log;
+
+public class FpsMeter {
+ private static final String TAG = "Sample::FpsMeter";
+ int step;
+ int framesCouner;
+ double freq;
+ long prevFrameTime;
+ String strfps;
+ DecimalFormat twoPlaces = new DecimalFormat("0.00");
+ Paint paint;
+
+ public void init() {
+ step = 20;
+ framesCouner = 0;
+ freq = core.getTickFrequency();
+ prevFrameTime = core.getTickCount();
+ strfps = "";
+
+ paint = new Paint();
+ paint.setColor(Color.BLUE);
+ paint.setTextSize(50);
+ }
+
+ public void measure() {
+ framesCouner++;
+ if (framesCouner % step == 0) {
+ long time = core.getTickCount();
+ double fps = step * freq / (time - prevFrameTime);
+ prevFrameTime = time;
+ DecimalFormat twoPlaces = new DecimalFormat("0.00");
+ strfps = twoPlaces.format(fps) + " FPS";
+ Log.i(TAG, strfps);
+ }
+ }
+
+ public void draw(Canvas canvas, float offsetx, float offsety) {
+ canvas.drawText(strfps, 20 + offsetx, 10 + 50 + offsety, paint);
+ }
+
+}
private SurfaceHolder mHolder;
private VideoCapture mCamera;
+ private FpsMeter mFps;
public SampleCvViewBase(Context context) {
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
+ mFps = new FpsMeter();
Log.i(TAG, "Instantiated new " + this.getClass());
}
public void run() {
Log.i(TAG, "Starting processing thread");
+ mFps.init();
+
while (true) {
Bitmap bmp = null;
}
bmp = processFrame(mCamera);
+
+ mFps.measure();
}
if (bmp != null) {
Canvas canvas = mHolder.lockCanvas();
if (canvas != null) {
canvas.drawBitmap(bmp, (canvas.getWidth() - bmp.getWidth()) / 2, (canvas.getHeight() - bmp.getHeight()) / 2, null);
+ mFps.draw(canvas, (canvas.getWidth() - bmp.getWidth()) / 2, 0);
mHolder.unlockCanvasAndPost(canvas);
}
bmp.recycle();
--- /dev/null
+package org.opencv.samples.imagemanipulations;
+
+import java.text.DecimalFormat;
+
+import org.opencv.core;
+
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.Log;
+
+public class FpsMeter {
+ private static final String TAG = "Sample::FpsMeter";
+ int step;
+ int framesCouner;
+ double freq;
+ long prevFrameTime;
+ String strfps;
+ DecimalFormat twoPlaces = new DecimalFormat("0.00");
+ Paint paint;
+
+ public void init() {
+ step = 20;
+ framesCouner = 0;
+ freq = core.getTickFrequency();
+ prevFrameTime = core.getTickCount();
+ strfps = "";
+
+ paint = new Paint();
+ paint.setColor(Color.BLUE);
+ paint.setTextSize(50);
+ }
+
+ public void measure() {
+ framesCouner++;
+ if (framesCouner % step == 0) {
+ long time = core.getTickCount();
+ double fps = step * freq / (time - prevFrameTime);
+ prevFrameTime = time;
+ DecimalFormat twoPlaces = new DecimalFormat("0.00");
+ strfps = twoPlaces.format(fps) + " FPS";
+ Log.i(TAG, strfps);
+ }
+ }
+
+ public void draw(Canvas canvas, float offsetx, float offsety) {
+ canvas.drawText(strfps, 20 + offsetx, 10 + 50 + offsety, paint);
+ }
+
+}
private SurfaceHolder mHolder;
private VideoCapture mCamera;
+ private FpsMeter mFps;
public SampleCvViewBase(Context context) {
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
+ mFps = new FpsMeter();
Log.i(TAG, "Instantiated new " + this.getClass());
}
public void run() {
Log.i(TAG, "Starting processing thread");
+ mFps.init();
+
while (true) {
Bitmap bmp = null;
}
bmp = processFrame(mCamera);
+
+ mFps.measure();
}
if (bmp != null) {
Canvas canvas = mHolder.lockCanvas();
if (canvas != null) {
canvas.drawBitmap(bmp, (canvas.getWidth() - bmp.getWidth()) / 2, (canvas.getHeight() - bmp.getHeight()) / 2, null);
+ mFps.draw(canvas, (canvas.getWidth() - bmp.getWidth()) / 2, 0);
mHolder.unlockCanvasAndPost(canvas);
}
bmp.recycle();