Поэтому я загрузил набор данных Open Images через наборы данных TensorFlow (https://www.tensorflow.org/datasets).. Я могу нормально просматривать изображения и аннотации, но не могу понять, какой странный формат они используют для ограничивающих прямоугольники объектов.
Например: у меня есть изображение, показывающее слона шириной 682 и высотой 1024. Координаты ограничивающего прямоугольника слона: [0,03875, 0,188732, 0,954375, 0,979343]. Согласно документации 4 числа представляют xMin, xMax, yMin, yMax.
Как отобразить этот странно маленький прямоугольник, скажем, с помощью matplotlib?
Я уже пытался умножить координаты на ширину и высоту соответственно, но получающиеся прямоугольники не имеют никакого смысла. Я также переключил значения для x_1, x_2 и т. Д., Но это тоже не сработало.
Это мой код:
for e in train_data:
np_img = e["image"]
height = np.shape(np_img)[0]
width = np.shape(np_img)[1]
fig, ax = plt.subplots(1)
ax.imshow(np_img)
for bbox in e["bobjects"]["bbox"]:
x_1 = bbox[0]
x_2 = bbox[1]
y_1 = bbox[2]
y_2 = bbox[3]
rect = patches.Rectangle((x_1 * width, y_2 * height), (x_2 * width - x_1 * width), (y_1 * height - y_2 * height), linewidth=1, edgecolor='r', facecolor='none')
ax.add_patch(rect)
plt.show()
# Only one iteration for testing
break