Я пытаюсь использовать OpenCV 2.4.3.2 для создания приложения для камеры и обработки некоторых opencv. Я хотел бы, чтобы он мог иметь несколько ориентаций пользовательского интерфейса, а не только Landscape.
Проблема заключается в том, что когда я меняю ориентацию на портрет, изображение выходит сбоку.
Я понимаю, что я мог просто повернуть входное изображение перед выполнением обработки изображений (и, таким образом, оставить ориентацию только ландшафтом), что прекрасно и работает, но doesn "Решите проблему, что остальная часть моего интерфейса будет в неправильной ориентации.
Я также попытался использовать этот код для поворота камеры 90deg, но он просто не работает.
mCamera.setDisplayOrientation(90);
Он либо не имеет никакого эффекта, либо иногда просто заставляет черновик прерваться
Кто-нибудь сделал это успешно с OpenCV? Мой класс распространяется из JavaCameraView.
Изменить
Я сделал улучшение, а именно, что я повернул изображение внутри OpenCV, поскольку оно отображается в классе CameraBridgeViewBase.java.
В методе доставки и рисования:
if (canvas != null) {
canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
//canvas.drawBitmap(mCacheBitmap, (canvas.getWidth() - mCacheBitmap.getWidth()) / 2, (canvas.getHeight() - mCacheBitmap.getHeight()) / 2, null);
//Change to support portrait view
Matrix matrix = new Matrix();
matrix.preTranslate((canvas.getWidth() - mCacheBitmap.getWidth()) / 2,(canvas.getHeight() - mCacheBitmap.getHeight()) / 2);
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
matrix.postRotate(90f,(canvas.getWidth()) / 2,(canvas.getHeight()) / 2);
canvas.drawBitmap(mCacheBitmap, matrix, new Paint());
... В принципе, это просто загружает входное изображение так:
Это лучше, но я, очевидно, хочу, чтобы это было полноэкранным.