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