如何在Python中绘制边界框,给定矩形的4个顶点?

3

我正在开发OCR应用程序,并且给出的图像注释具有如下三角形的4个顶点:

x1_1, y1_1,x2_1,y2_1,x3_1,y3_1,x4_1,y4_1, text_line

我该如何绘制它?

我尝试使用plt.rectangle,但它只接受xmin、ymin、xmax、ymax,而这里有4个顶点?


1
找到x和y的最小/最大值有什么困难的吗? - Klaus D.
@KlausD. 这是您找到这些值的方式吗?-- (x1-x3), (y1-y3), (x2-x4), (y2-y4) - user_12
1个回答

2
如果你坚持不查找最小/最大值,可以这样做:
import numpy as np
import matplotlib.pyplot as plt

d=[1,1,1,4,3,4,3,1]
Xs = d[::2]
Ys = d[1::2]
for i in range(4):
    if i < 3:
        plt.plot([Xs[i],Xs[i+1]],[Ys[i],Ys[i+1]],'k-',lw=2)
    elif i == 3:
        plt.plot([Xs[i],Xs[0]],[Ys[i],Ys[0]],'k-',lw=2)

plt.show()

这将给出:

enter image description here

正确的方法是先找到最左边的点,然后找到宽度和高度并将所有三个参数传递给matplotlib.patches.Rectangle。如果您按正确顺序排序了点,则只需要取(x_1,y_1),然后width=x_4-x_1height=y_2-y_1

简单示例如下:

import matplotlib.pyplot as plt
import matplotlib.patches as pac

plt.axes()
rectangle = pac.Rectangle((1,1), 50, 20, fc='blue',ec="red")
plt.gca().add_patch(rectangle)
plt.axis('scaled')
plt.show()

生成什么:

在此输入图片描述


我尝试使用patches.rectangle,但它没有显示在我的图像上。你能帮我解决一下吗? - user_12
我使用了 rect = Rectangle((x1, y1), width=x4-x1, height=y2-y1, linewidth=1,edgecolor='r')ax.add_patch(rect),但是没有绘制出任何东西。 - user_12
@user_12,我不知道你的问题是什么,但你可以看到编辑后它可以正常工作。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接