Извлечение отдельных изображений из координат ограничивающего прямоугольника YOLO - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть набор изображений и соответствующие им координаты YOLO. Теперь я хочу извлечь объекты, обозначенные этими координатами YOLO, в отдельные изображения.

Но эти координаты находятся в записи с плавающей запятой и, следовательно, не могут использовать сращивание.

Это изображение Образец изображения и соответствующие координаты YOLO

labels = [0.536328, 0.5, 0.349219, 0.611111]

Я прочитал мое изображение следующим образом:

image = cv2.imread('frame0.jpg')

Затем я хотел использовать что-то вроде image[y:y+h,x:x+w] в качестве своего видел в подобном вопросе. Но переменные являются числами с плавающей точкой, поэтому я попытался преобразовать их в целые числа, используя размеры изображения 1280 x 720 следующим образом:

object = [int(label[0]*720), int(label[1]*720), int(label[2]*1280), int(label[3]*1280)]
x,y,w,h = object

Но это не дает правильную часть изображения, как вы можете см. здесь extractImage

Это часть моего учебного набора данных, поэтому я обрезал эти части ранее, используя некоторые инструменты, чтобы не было ошибок в моих ярлыках. Также все изображения неправильно обрезаны таким образом, я показал вывод для одного из изображений.

Заранее большое спасибо. Любые предложения будут действительно полезны!

1 Ответ

1 голос
/ 08 апреля 2020

Надписи должны быть нормализованы по-разному - поскольку x и y относятся к центру экрана, они фактически умножаются на W/2 и H/2 соответственно. Кроме того, размеры ширины и высоты должны быть умножены на W и H соответственно - в настоящее время они оба нормализуются на W (1280). Вот как я решил это:

import cv2
import matplotlib.pyplot as plt

label = [0.536328, 0.5, 0.349219, 0.611111]
img = cv2.imread('P6A4J.jpg')

H, W, _ = img.shape
object = [int(label[0]*W/2), int(label[1]*H/2), int(label[2]*W), int(label[3]*H)]

x,y,w,h = object
plt.subplot(1,2,1)
plt.imshow(img)
plt.subplot(1,2,2)
plt.imshow(img[y:y+h, x:x+w])
plt.show()


plt.show()

Вывод:

enter image description here] 1

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...