如何在调整大小的图像上绘制矩形块?
How do i draw rectangle blocks on resized image?
我有一些图像,我想从中识别文本块并在它们周围绘制矩形,但这些图像的尺寸各不相同,因此,我已将它们的大小调整为新的尺寸,并且我能够在周围绘制块文本。但之后我必须在这些块上应用 OCR,当我将图像调整为较低尺寸时,这些块文本变得模糊。
示例:将尺寸为 (5847, 4134) 的图像调整为 (1000,700)
我能够绘制文本块,但在获得这些块的坐标后,即使我乘以图像调整大小的比率,它也不会显示像这样的精确块:
调整大小后的块
使用调整后图像的坐标在原始图像上绘制块
为了在原件上绘制积木,我做了这样的事情:
x, y, w, h = cv2.boundingRect(c)
x = round(x*x_old/wid)
y = round(y*y_old/hei)
w = round(w*x_old/wid)
h = round(h*y_old/hei)
其中 x_old 是本例中的原始高度 5874,y_old 是 4134,wid 是 1000,hei 是 700
与 Opencv 相比,这更像是一个几何问题。
假设您知道尺寸为 1000X1000 的图像的所有矩形,假设这些矩形是 rec1 = ([0,0],[100,100])
,rec2 = ([50,50],[90,90])
是 ([y1,x1],[y2,x2])
。
好的,现在让我们假设您有另一张形状为 1255X1300 的图像,并且您想在此新图像中相对于旧图像绘制相同的矩形。
您需要做的是找到两个图像之间的 x 和 y 比率,并将这些比率应用于图像。或者你可以用相对的方式表达你的矩形。
计算比率:
要计算两个图像之间的比率,只需除以其 x 和 y 维度:
x_ratio = x_new/x_old
y_ratio = y_new/y_old
在我们的例子中是:
x_ratio = 1.300
y_ratio = 1.255
现在您将此比率应用于矩形并四舍五入其值。您只需将矩形的 x 乘以 x_ratio,将矩形的 y 乘以 y_ratio,然后将值四舍五入(请记住,四舍五入会使它失去一点精度)
相对矩形:
您还可以通过划分相应的尺寸来表示相对于第一张图像的矩形。相关矩形应如下所示:rel_rec1 = ([0.,0.],[0.1,0.1])
、rel_rec2 = ([0.05,0.05],[0.09,0.09])
然后,要知道新图像中矩形的绝对值,只需将相对矩形乘以新图像的尺寸并四舍五入即可,例如
new_rec2 = ([0.05*1255,0.05*1300],[0.09*1255,0.09*1300])
希望对您有所帮助
我有一些图像,我想从中识别文本块并在它们周围绘制矩形,但这些图像的尺寸各不相同,因此,我已将它们的大小调整为新的尺寸,并且我能够在周围绘制块文本。但之后我必须在这些块上应用 OCR,当我将图像调整为较低尺寸时,这些块文本变得模糊。
示例:将尺寸为 (5847, 4134) 的图像调整为 (1000,700) 我能够绘制文本块,但在获得这些块的坐标后,即使我乘以图像调整大小的比率,它也不会显示像这样的精确块:
调整大小后的块
使用调整后图像的坐标在原始图像上绘制块
为了在原件上绘制积木,我做了这样的事情:
x, y, w, h = cv2.boundingRect(c)
x = round(x*x_old/wid)
y = round(y*y_old/hei)
w = round(w*x_old/wid)
h = round(h*y_old/hei)
其中 x_old 是本例中的原始高度 5874,y_old 是 4134,wid 是 1000,hei 是 700
与 Opencv 相比,这更像是一个几何问题。
假设您知道尺寸为 1000X1000 的图像的所有矩形,假设这些矩形是 rec1 = ([0,0],[100,100])
,rec2 = ([50,50],[90,90])
是 ([y1,x1],[y2,x2])
。
好的,现在让我们假设您有另一张形状为 1255X1300 的图像,并且您想在此新图像中相对于旧图像绘制相同的矩形。
您需要做的是找到两个图像之间的 x 和 y 比率,并将这些比率应用于图像。或者你可以用相对的方式表达你的矩形。
计算比率:
要计算两个图像之间的比率,只需除以其 x 和 y 维度:
x_ratio = x_new/x_old
y_ratio = y_new/y_old
在我们的例子中是:
x_ratio = 1.300 y_ratio = 1.255
现在您将此比率应用于矩形并四舍五入其值。您只需将矩形的 x 乘以 x_ratio,将矩形的 y 乘以 y_ratio,然后将值四舍五入(请记住,四舍五入会使它失去一点精度)
相对矩形:
您还可以通过划分相应的尺寸来表示相对于第一张图像的矩形。相关矩形应如下所示:rel_rec1 = ([0.,0.],[0.1,0.1])
、rel_rec2 = ([0.05,0.05],[0.09,0.09])
然后,要知道新图像中矩形的绝对值,只需将相对矩形乘以新图像的尺寸并四舍五入即可,例如
new_rec2 = ([0.05*1255,0.05*1300],[0.09*1255,0.09*1300])
希望对您有所帮助