原始问题:Original question
我的图片 I1 大小为height x width = (1500,500)
,已调整为(500,300)
。
I1 包含以坐标(Top, Left, Bottom, Right)
为特征的边界框。
当 I1 的大小发生变化时,如何重新缩放边界框的坐标?这些公式是否正确?
double newTop = Math.Ceiling((top) * (double)pictureBox1.Height / (double)image1.Height);
double newLeft = Math.Ceiling((left) * (double)pictureBox1.Width / (double)image1.Width);
double newBottom = Math.Ceiling((bottom + 1) * (double)pictureBox1.Height / (double)image1.Height) - 1;
double newRight = Math.Ceiling((right + 1) * (double)pictureBox1.Width / (double)image1.Width) - 1;
答案 0 :(得分:1)
一般来说:
尺寸按因子(新尺寸)/(旧尺寸)缩放。
坐标有点复杂:
x2 = left2 + (x1 - left1) * width2 / width1
y2 = top2 + (y1 - top1) * height2 / height1
其中left
和width
等描述整个图像的位置。 x
和y
描述了正在转换的功能。在您的情况下,边界框的角是功能。
如果left1
,left2
,top1
,top2
都为零,您将获得与您类似的表达式。