OpenCV (Java): нарисуйте прямоугольную область в обзоре камеры

Я пытаюсь создать сканер банковских карт на Android с помощью OpenCV, сначала я создаю область, в которой пользователь может сканировать свои карты, а затем обрезать ее, я борюсь с областью прямоугольника и помещаю ее в центр, Любые предложения о том, как я могу это сделать? Большое спасибо

Вот что я сделал до сих пор:

Он делает прямоугольник и центрируется, но размера недостаточно. Я пытался изменить числа, но положение не центрируется.

 public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
        Mat mrgba = inputFrame.rgba();

        int w = mrgba.width();
        int h = mrgba.height();

        Imgproc.rectangle(mrgba, new Point(w * 1 / 3, h * 1 / 3), new Point(
                w * 2 / 3, h * 2 /  3 ), new Scalar( 255, 0, 0 ), 5
        );

        return mrgba;
    }

ВЫХОД

OpenCV (Java): нарисуйте прямоугольную область в обзоре камеры

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 089
1

Ответы 1

Попробуй это:

int w = mrgba.width();
int h = mrgba.height();
int w_rect = w*3/4; // or 640
int h_rect = h*3/4; // or 480

Imgproc.rectangle(mrgba, new Point( (w-w_rect)/2, (h-h_rect)/2 ), new Point(
            (w+w_rect)/2, (h+h_rect)/2 ), new Scalar( 255, 0, 0 ), 5

Убедитесь, что w_rect и h_rect меньше, чем ш и час, соответственно.

Есть ли способ добавить несколько областей интереса, чтобы найти контуры в определенных областях интереса? Я хочу найти прямоугольник Трехугольник, который находится в вертикальном положении.

Prajapati Jigar 04.08.2020 14:46

Другие вопросы по теме