A complete guide to scale opencv camera to fullscreen.Watch the video tutorial for details.
Codes:
Method 1:
if (bmpValid && mCacheBitmap != null) {
Canvas canvas = getHolder().lockCanvas();
canvas.rotate(90f, canvas.getWidth()/2, canvas.getHeight()/2);
float mScale1 = (float) canvas.getHeight()/(float) (mCacheBitmap.getWidth());
float mScale2 = (float) canvas.getWidth()/(float) (mCacheBitmap.getHeight());
if (canvas != null) {
canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
Log.d(TAG, "mStretch value: " + mScale);
if (mScale1 != 0) {
canvas.drawBitmap(mCacheBitmap, new Rect(0,0,mCacheBitmap.getWidth(), mCacheBitmap.getHeight()),
new Rect((int)((canvas.getWidth() - mScale1*mCacheBitmap.getWidth()) / 2),
(int)((canvas.getHeight() - mScale2*mCacheBitmap.getHeight()) / 2),
(int)((canvas.getWidth() - mScale1*mCacheBitmap.getWidth()) / 2 + mScale1*mCacheBitmap.getWidth()),
(int)((canvas.getHeight() - mScale2*mCacheBitmap.getHeight()) / 2 + mScale2*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);
}
Method2:
if (canvas != null) {
canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
Log.d(TAG, "mStretch value: " + mScale);
Matrix matrix = new Matrix();
matrix.preTranslate((canvas.getWidth()-mCacheBitmap.getWidth())/2,(canvas.getHeight()-mCacheBitmap.getHeight())/2);
matrix.postRotate(90f,(canvas.getWidth())/2,(canvas.getHeight())/2);
float scale = (float) canvas.getWidth()/(float) mCacheBitmap.getHeight();
matrix.postScale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2);
canvas.drawBitmap(mCacheBitmap, matrix, new Paint());
0 Comments