转换图像中对象的注释

时间:2017-07-12 01:49:27

标签: image opencv transformation bounding-box

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

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:0)

您也可以使用此软件包: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>"

很容易