image - 转换图像中对象的注释

标签 image opencv transformation bounding-box

我有特定的图像数据集,其中包含该图像中对象的注释。图像中对象的注释,如 [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/

相关文章:

android - 如何将图片保存在安全存储中并在 android 中访问它们?

python - 图像在 Pygame 中旋转,同时保持平滑的边缘

c# - 使用移动相机检测运动

python - DICT4X4 中的 ArUco 标记检测良好,但 DICT5x5 中的检测不佳

javascript - 基于窗口宽度和高度应用 CSS3 转换

opencv - 如何从单个组件创建 2D 透视变换矩阵?

c - 使用最近邻法放大图像

javascript - 使用 color-thief 从图像中获取背景颜色

c++ - 在opencv中检测人脸何时进入ROI

html - 参数和变量必须位于模板的顶部吗?