mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 14:13:15 +08:00
Added FPS measurement to some Android samples
This commit is contained in:
parent
9e00cc59af
commit
d445903b31
@ -0,0 +1,50 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -16,11 +16,13 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
|
|||||||
|
|
||||||
private SurfaceHolder mHolder;
|
private SurfaceHolder mHolder;
|
||||||
private VideoCapture mCamera;
|
private VideoCapture mCamera;
|
||||||
|
private FpsMeter mFps;
|
||||||
|
|
||||||
public SampleCvViewBase(Context context) {
|
public SampleCvViewBase(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
mHolder = getHolder();
|
mHolder = getHolder();
|
||||||
mHolder.addCallback(this);
|
mHolder.addCallback(this);
|
||||||
|
mFps = new FpsMeter();
|
||||||
Log.i(TAG, "Instantiated new " + this.getClass());
|
Log.i(TAG, "Instantiated new " + this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +80,8 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.i(TAG, "Starting processing thread");
|
Log.i(TAG, "Starting processing thread");
|
||||||
|
mFps.init();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
Bitmap bmp = null;
|
Bitmap bmp = null;
|
||||||
|
|
||||||
@ -91,12 +95,15 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
|
|||||||
}
|
}
|
||||||
|
|
||||||
bmp = processFrame(mCamera);
|
bmp = processFrame(mCamera);
|
||||||
|
|
||||||
|
mFps.measure();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bmp != null) {
|
if (bmp != null) {
|
||||||
Canvas canvas = mHolder.lockCanvas();
|
Canvas canvas = mHolder.lockCanvas();
|
||||||
if (canvas != null) {
|
if (canvas != null) {
|
||||||
canvas.drawBitmap(bmp, (canvas.getWidth() - bmp.getWidth()) / 2, (canvas.getHeight() - bmp.getHeight()) / 2, 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);
|
mHolder.unlockCanvasAndPost(canvas);
|
||||||
}
|
}
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -16,11 +16,13 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
|
|||||||
|
|
||||||
private SurfaceHolder mHolder;
|
private SurfaceHolder mHolder;
|
||||||
private VideoCapture mCamera;
|
private VideoCapture mCamera;
|
||||||
|
private FpsMeter mFps;
|
||||||
|
|
||||||
public SampleCvViewBase(Context context) {
|
public SampleCvViewBase(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
mHolder = getHolder();
|
mHolder = getHolder();
|
||||||
mHolder.addCallback(this);
|
mHolder.addCallback(this);
|
||||||
|
mFps = new FpsMeter();
|
||||||
Log.i(TAG, "Instantiated new " + this.getClass());
|
Log.i(TAG, "Instantiated new " + this.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +80,8 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.i(TAG, "Starting processing thread");
|
Log.i(TAG, "Starting processing thread");
|
||||||
|
mFps.init();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
Bitmap bmp = null;
|
Bitmap bmp = null;
|
||||||
|
|
||||||
@ -91,12 +95,15 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
|
|||||||
}
|
}
|
||||||
|
|
||||||
bmp = processFrame(mCamera);
|
bmp = processFrame(mCamera);
|
||||||
|
|
||||||
|
mFps.measure();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bmp != null) {
|
if (bmp != null) {
|
||||||
Canvas canvas = mHolder.lockCanvas();
|
Canvas canvas = mHolder.lockCanvas();
|
||||||
if (canvas != null) {
|
if (canvas != null) {
|
||||||
canvas.drawBitmap(bmp, (canvas.getWidth() - bmp.getWidth()) / 2, (canvas.getHeight() - bmp.getHeight()) / 2, 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);
|
mHolder.unlockCanvasAndPost(canvas);
|
||||||
}
|
}
|
||||||
bmp.recycle();
|
bmp.recycle();
|
||||||
|
Loading…
Reference in New Issue
Block a user