Merge pull request #630 from asmorkalov:android_view_stretch
This commit is contained in:
commit
632211eb27
@ -15,6 +15,7 @@ import android.content.DialogInterface;
|
|||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Rect;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.SurfaceHolder;
|
import android.view.SurfaceHolder;
|
||||||
@ -44,6 +45,7 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac
|
|||||||
protected int mFrameHeight;
|
protected int mFrameHeight;
|
||||||
protected int mMaxHeight;
|
protected int mMaxHeight;
|
||||||
protected int mMaxWidth;
|
protected int mMaxWidth;
|
||||||
|
protected float mScale = 0;
|
||||||
protected int mPreviewFormat = Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA;
|
protected int mPreviewFormat = Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA;
|
||||||
protected int mCameraIndex = -1;
|
protected int mCameraIndex = -1;
|
||||||
protected boolean mEnabled;
|
protected boolean mEnabled;
|
||||||
@ -389,7 +391,22 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac
|
|||||||
Canvas canvas = getHolder().lockCanvas();
|
Canvas canvas = getHolder().lockCanvas();
|
||||||
if (canvas != null) {
|
if (canvas != null) {
|
||||||
canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
|
canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
|
||||||
canvas.drawBitmap(mCacheBitmap, (canvas.getWidth() - mCacheBitmap.getWidth()) / 2, (canvas.getHeight() - mCacheBitmap.getHeight()) / 2, null);
|
Log.d(TAG, "mStretch value: " + mScale);
|
||||||
|
|
||||||
|
if (mScale != 0) {
|
||||||
|
canvas.drawBitmap(mCacheBitmap, new Rect(0,0,mCacheBitmap.getWidth(), mCacheBitmap.getHeight()),
|
||||||
|
new Rect((int)((canvas.getWidth() - mScale*mCacheBitmap.getWidth()) / 2),
|
||||||
|
(int)((canvas.getHeight() - mScale*mCacheBitmap.getHeight()) / 2),
|
||||||
|
(int)((canvas.getWidth() - mScale*mCacheBitmap.getWidth()) / 2 + mScale*mCacheBitmap.getWidth()),
|
||||||
|
(int)((canvas.getHeight() - mScale*mCacheBitmap.getHeight()) / 2 + mScale*mCacheBitmap.getHeight())), null);
|
||||||
|
} else {
|
||||||
|
canvas.drawBitmap(mCacheBitmap, new Rect(0,0,mCacheBitmap.getWidth(), mCacheBitmap.getHeight()),
|
||||||
|
new Rect((canvas.getWidth() - mCacheBitmap.getWidth()) / 2,
|
||||||
|
(canvas.getHeight() - mCacheBitmap.getHeight()) / 2,
|
||||||
|
(canvas.getWidth() - mCacheBitmap.getWidth()) / 2 + mCacheBitmap.getWidth(),
|
||||||
|
(canvas.getHeight() - mCacheBitmap.getHeight()) / 2 + mCacheBitmap.getHeight()), null);
|
||||||
|
}
|
||||||
|
|
||||||
if (mFpsMeter != null) {
|
if (mFpsMeter != null) {
|
||||||
mFpsMeter.measure();
|
mFpsMeter.measure();
|
||||||
mFpsMeter.draw(canvas, 20, 30);
|
mFpsMeter.draw(canvas, 20, 30);
|
||||||
|
@ -10,6 +10,7 @@ import android.hardware.Camera.PreviewCallback;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.ViewGroup.LayoutParams;
|
||||||
|
|
||||||
import org.opencv.core.CvType;
|
import org.opencv.core.CvType;
|
||||||
import org.opencv.core.Mat;
|
import org.opencv.core.Mat;
|
||||||
@ -130,6 +131,11 @@ public class JavaCameraView extends CameraBridgeViewBase implements PreviewCallb
|
|||||||
mFrameWidth = params.getPreviewSize().width;
|
mFrameWidth = params.getPreviewSize().width;
|
||||||
mFrameHeight = params.getPreviewSize().height;
|
mFrameHeight = params.getPreviewSize().height;
|
||||||
|
|
||||||
|
if ((getLayoutParams().width == LayoutParams.MATCH_PARENT) && (getLayoutParams().height == LayoutParams.MATCH_PARENT))
|
||||||
|
mScale = Math.min(((float)height)/mFrameHeight, ((float)width)/mFrameWidth);
|
||||||
|
else
|
||||||
|
mScale = 0;
|
||||||
|
|
||||||
if (mFpsMeter != null) {
|
if (mFpsMeter != null) {
|
||||||
mFpsMeter.setResolution(mFrameWidth, mFrameHeight);
|
mFpsMeter.setResolution(mFrameWidth, mFrameHeight);
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import org.opencv.highgui.VideoCapture;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.ViewGroup.LayoutParams;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is an implementation of a bridge between SurfaceView and native OpenCV camera.
|
* This class is an implementation of a bridge between SurfaceView and native OpenCV camera.
|
||||||
@ -102,6 +103,11 @@ public class NativeCameraView extends CameraBridgeViewBase {
|
|||||||
mFrameWidth = (int)frameSize.width;
|
mFrameWidth = (int)frameSize.width;
|
||||||
mFrameHeight = (int)frameSize.height;
|
mFrameHeight = (int)frameSize.height;
|
||||||
|
|
||||||
|
if ((getLayoutParams().width == LayoutParams.MATCH_PARENT) && (getLayoutParams().height == LayoutParams.MATCH_PARENT))
|
||||||
|
mScale = Math.min(((float)height)/mFrameHeight, ((float)width)/mFrameWidth);
|
||||||
|
else
|
||||||
|
mScale = 0;
|
||||||
|
|
||||||
if (mFpsMeter != null) {
|
if (mFpsMeter != null) {
|
||||||
mFpsMeter.setResolution(mFrameWidth, mFrameHeight);
|
mFpsMeter.setResolution(mFrameWidth, mFrameHeight);
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
android:layout_height="match_parent" >
|
android:layout_height="match_parent" >
|
||||||
|
|
||||||
<org.opencv.samples.tutorial3.Tutorial3View
|
<org.opencv.samples.tutorial3.Tutorial3View
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="match_parent"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:id="@+id/tutorial3_activity_java_surface_view" />
|
android:id="@+id/tutorial3_activity_java_surface_view" />
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user