смотрите это: matrix.setRotate (90f); Bitmap bitmap = Bitmap.createBitmap (mCacheBitmap, 0, 0, mCacheBitmap.getWidth (), mCacheBitmap.getHeight (), matrix, true);

ичок в OpenCv4Android. Я пытаюсь автоматически определить документ с помощью OpenCv4Android SDK. Первоначально я прошел через пейзажную камеру OpenCV. Каким-то образом мне удалось изменить ориентацию opencv JavaCameraview на портрет. Я сделал следующие изменения в классах OpenCV SDK по умолчанию для ориентации камеры OpenCV в портретной:

1) ВCameraBridgeViewBase учебный класс

 Matrix matrix = new Matrix();
 matrix.setRotate(90f);
 Bitmap bitmap = Bitmap.createBitmap(mCacheBitmap, 0, 0, mCacheBitmap.getWidth(), mCacheBitmap.getHeight(), matrix, true);

2) теперь в методе drawbitmap заменить вышебитовая карта сmCacheBitmap

3) сейчас, вJavaCameraView учебный класс

if ((getLayoutParams().width == ActionBar.LayoutParams.MATCH_PARENT) && (getLayoutParams().height == ActionBar.LayoutParams.MATCH_PARENT))
       mScale = Math.min(((float)height)/mFrameWidth, ((float)width)/mFrameHeight);
else
       mScale = 0;

После вышеуказанных изменений я могу ориентировать камеру в портретном режиме. Но возникла странная проблема с обнаружением документа. Смотрите ниже изображения

Как вы можете видеть на первом изображении, перед настройкой я могу обнаружить бумагу в полном зеленом цвете. А на втором изображении вы видите ошибку рисования линии (drawContours) вокруг бумаги

что я следую, чтобы обнаружить бумагу:GaussianBlur -> Обнаружение канни-края -> findContours -> drawContour

В методе OnCameraFrame:

     mRgba = inputFrame.rgba();
   Mat mGray = new Mat();
   Mat edged = new Mat();       
  Imgproc.cvtColor(mRgba,mGray,Imgproc.COLOR_BGR2GRAY);
  Imgproc.GaussianBlur(mRgba,mGray,new Size(5,5),0);           

-> а затем найти контуры

Imgproc.findContours(edged, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);

-> Затем я нашел самый большой контур и, наконец, DrawContours на этом

Imgproc.drawContours(mRgba, contours, maxI, new Scalar(0, 255, 0), 5);

Я не знаю, где я не прав ..! Пожалуйста, помогите мне решить эту странную проблему.

@Rick M. следующее оригинальное изображение:

@ ilke444, ниже приведено изображение после обнаружения края, и это именно то, что я хочу:

Ответы на вопрос(0)

Ваш ответ на вопрос