转换图像中对象的注释

Transforming annotations for an object in an image

我有一些图像数据集,其中包含该图像中对象的注释。图像中对象的注释如 [xmin, xmax, ymin, ymax]。在保持纵横比不变的情况下调整图像大小时如何将这些坐标转换为其新值?

如果您只是调整大小,请使用调整大小。例如:

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)。

你也可以使用这个包: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>"