смотрите это: 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, ниже приведено изображение после обнаружения края, и это именно то, что я хочу: