Преобразование координат прямоугольника opencv в координаты объекта yolo для маркировки изображений - PullRequest
1 голос
/ 07 августа 2020

Я хочу создать программу маркировки изображений с opencv c ++ для маркировки изображений для детектора объектов yolo, но я изо всех сил пытаюсь преобразовать координаты прямоугольника (x1, y1, x2, y2) в формат yolo, который является "объектным классом x_center y_center ширина высота". И согласно документации x_center и y_center находятся в центре прямоугольника (не являются верхним левым углом).

Я пробовал этот код на уже помеченном изображении

            double centerX = (x1 + x2) / (2.0 * imageWidth);
            double centerY = (y1 + y2) / (2.0 * imageHeight);
            double width = double(abs(x2 - x1) / imageWidth);
            double height = double(abs(y2- y1) / imageHeight);

и получил 0 0.396759 0.278906 0.0109375 0.326852, который отличается от 0 0.40703125 0.5194444444444445 0.25364583333333335 0.5851851851851851. Как заставить его работать?

1 Ответ

0 голосов
/ 09 августа 2020

Наконец-то я нашел работающий код:

Point centralPoint = Point((selectedRect.tl().x + selectedRect.br().x) / 2, (selectedRect.tl().y + selectedRect.br().y) / 2);
                centerX = centralPoint.x / imageWidth;
                centerY = centralPoint.y / imageHeight;

                rectWidth = abs(selectedRect.br().x - selectedRect.tl().x) / imageWidth;
                rectHeight = abs(selectedRect.br().y - selectedRect.tl().y) / imageHeight;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...