Opencv Camera portrait orientation android studio arctic fox


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());
                

Post a Comment

0 Comments

Recent Posts