我正在开发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个顶点?
我正在开发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个顶点?
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()
这将给出:
正确的方法是先找到最左边的点,然后找到宽度和高度并将所有三个参数传递给matplotlib.patches.Rectangle
。如果您按正确顺序排序了点,则只需要取(x_1,y_1)
,然后width=x_4-x_1
,height=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()
生成什么:
rect = Rectangle((x1, y1), width=x4-x1, height=y2-y1, linewidth=1,edgecolor='r')
和 ax.add_patch(rect)
,但是没有绘制出任何东西。 - user_12