OpenCV (Java): нарисуйте прямоугольник на виде с камеры - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь создать сканер банковских карт на 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;
    }

ВЫХОД

enter image description here

1 Ответ

0 голосов
/ 29 октября 2018

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

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 меньше w и h соответственно.

...