Не совсем уверен, что это именно то, что вы имеете в виду, но это должно помочь:
import cv2
def read_images_and_labels(img_dir, label_file):
with open(label_file) as f:
labels = [word.lower().strip() for word in f.read().split("\n")]
data = {}
for (ind, val) in enumerate(list(set(labels))):
data[val] = ind
corrected_labels = [data[label] for label in labels]
images = [cv2.imread('{}/{}.png'.format(img_dir, ind), cv2.IMREAD_COLOR) for (ind, label) in enumerate(labels, 1)]
return list(zip(images, corrected_labels))
img_dir - это место, где хранятся изображения, а label_file - место, где хранятся данные меток. на основе вашего кода замените вызов create_data()
на
array_name = read_images_and_labels(data_dir, file='index.txt')
Если вы хотите проверить метки, передайте данные в следующую функцию. Установите время ожидания выше / ниже для большей / меньшей продолжительности (время ожидания указывается в миллисекундах). Можно просмотреть окно cv2 с меткой на изображении.
def verify_labels(data, label_file='index.txt', timeout=1000):
with open(label_file) as f:
labels = list(set(f.read().lower().split("\n")))
for (img, ind) in data:
lbl = labels[ind]
image = cv2.putText(img, lbl, (50,50), cv2.FONT_HERSHEY_SIMPLEX,
1, (0, 0, 255), cv2.LINE_AA, False)
cv2.imshow(lbl, image)
cv2.waitKey(timeout)