Преобразование аннотаций для объекта на изображении

У меня есть определенный набор данных изображений, в котором есть аннотации к объектам на этом изображении. Аннотации, как в [xmin, xmax, ymin, ymax] для объекта на изображении. Как мне преобразовать эти координаты в их новые значения, когда я изменяю размер изображения, сохраняя соотношение сторон?


person harman    schedule 12.07.2017    source источник
comment
вы пытаетесь извлечь вспомогательное изображение с координатами? потому что это отличается от изменения размера.   -  person Jisu Hong    schedule 12.07.2017
comment
На самом деле, нет. Допустим, на изображении есть объект. Я хочу изменить размер изображения. После изменения размера изображения координаты ограничивающей рамки этого объекта на изображении изменяются. Как мне получить новые координаты объекта на изображении?   -  person harman    schedule 12.07.2017
comment
Вы изменяете размер изображения? потому что вы также можете сжимать или расширять координаты объекта вместе с изменением размера. Например, если вы изменяете размер изображения на 0,5, координаты также должны быть изменены на 0,5.   -  person Jisu Hong    schedule 12.07.2017
comment
Да, я меняю размер изображений.   -  person harman    schedule 12.07.2017
comment
затем независимо от того, какой коэффициент вы изменяете, умножьте их на свои xmin, xmax, ymin и ymax.   -  person Jisu Hong    schedule 12.07.2017
comment
Хорошо, я понял. Спасибо   -  person harman    schedule 12.07.2017
comment
Рад, что помог. сохраняй кодирование, оставайся спокойным.   -  person Jisu Hong    schedule 12.07.2017
comment
Мне нужны квадратные изображения, что, если исходные изображения не квадратной формы?   -  person harman    schedule 12.07.2017
comment
вы все еще можете использовать прямоугольник, чтобы получить квадратное изображение   -  person Jisu Hong    schedule 12.07.2017
comment
Давайте продолжим это обсуждение в чате.   -  person harman    schedule 12.07.2017


Ответы (2)


Если вы просто изменяете размер, используйте изменение размера. Например:

using namespace cv;
Mat img;
img = imread("image.jpg", CV_LOAD_IMAGE_COLOR);
Mat dst;
resize(img, dst, Size(xmax-xmin,ymax-ymin));

Если вы извлекаете вспомогательное изображение, используйте Rect. Например:

using namespace cv;
Mat original_img;
Rect roi;
roi.x = xmin;
roi.y = ymin;
roi.width = xmax-xmin;
roi.height = ymax-ymin;

Mat subimage = original_img(roi);

Если вы пытаетесь узнать координаты (xmin, xmax, ymin, ymax) после изменения размера,

умножьте их на коэффициент изменения размера.

Например, если размер изменен в 0,5 раза,

координаты (xmin, xmax, ymin, ymax) теперь равны (xmin * 0,5, xmax * 0,5, ymin * 0,5, ymax * 0,5).

person Jisu Hong    schedule 12.07.2017

вы также можете использовать этот пакет: https://github.com/italojs/resize_dataset_pascalvoc его легко использовать python3 main.py -p <IMAGES_&_XML_PATH> --output <IMAGES_&_XML> --new_x <NEW_X_SIZE> --new_y <NEW_X_SIZE> --save_box_images <FLAG>"

person Italo José    schedule 13.02.2019