我有特定的图像数据集,其中包含该图像中对象的注释。图像中对象的注释,如 [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)。
关于image - 转换图像中对象的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047019/