Да, в учебнике можно использовать переменную output_dict
. Обратите внимание на все переменные, переданные в функцию vis_util.visualize_boxes_and_labels_on_image_array
, они содержат поля, оценки и т. Д.
Сначала вам нужно получить форму изображения, поскольку координаты блока находятся в нормализованном виде.
img_height, img_width, img_channel = image_np.shape
Затем преобразуйте все координаты блока в абсолютный формат
absolute_coord = []
THRESHOLD = 0.7 # adjust your threshold here
N = len(output_dict['detection_boxes'])
for i in range(N):
if output_dict['score'][i] < THRESHOLD:
continue
box = output_dict['detection_boxes']
ymin, xmin, ymax, xmax = box
x_up = int(xmin*img_width)
y_up = int(ymin*img_height)
x_down = int(xmax*img_width)
y_down = int(ymax*img_height)
absolute_coord.append((x_up,y_up,x_down,y_down))
Тогда вы можете использовать кусочки, чтобы получить область изображения внутри ограничительной рамки
bounding_box_img = []
for c in absolute_coord:
bounding_box_img.append(image_np[c[1]:c[3], c[0]:c[2],:])
Затем просто сохраните все массивы в bounding_box_img
как изображения. При сохранении вам может понадобиться изменить форму, так как img находится в форме [img_height, img_width, img_channel]. Кроме того, вы можете даже отфильтровать все обнаружения с низким уровнем достоверности, если вы используете массив оценок.
PS: я мог бы ошибиться с img_height
и img_width
, но это должно дать вам отправную точку.