Как сохранить обрезанные изображения с их оригинальным именем файла? - PullRequest
0 голосов
/ 13 февраля 2020

Я написал небольшой блок кода для сохранения обрезанных изображений в файлах, основанных на их классах. Дело в том, что эти изображения сохраняются с префиксом BB_Shirt или BB_Short относительно их классов, но теперь я хочу сохранить их с тем же префиксом, но добавив также исходное имя файла изображения, например:

У меня есть эти изображения: Prv_image_1021

И обрезанные объекты будут сохранены следующим образом: (предположим, что есть 4 объекта), я хочу, чтобы мой вывод был BB_Shirt_1021_1, BB_Short_1021_2, BB_Shirt_1021_3, BB_Short_1021_4

* 1006 Здесь код:
for i in idxs.flatten():
    # extract the bounding box coordinates
    (x, y) = (boxes[i][0], boxes[i][1])
    (w, h) = (boxes[i][2], boxes[i][3])

    # draw a bounding box rectangle and label on the image
    color = [int(c) for c in COLORS[classIDs[i]]]
    cv2.rectangle(image, (x, y), (x + w, y + h), color, 2)
    text = "{}: {:.4f}".format(LABELS[classIDs[i]], confidences[i])
    cv2.putText(image, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX,
        0.5, color, 2)
    # Saving our detected objects with respect to the Label
    img=image[y:y + h,x:x + w]
    if LABELS[classIDs[i]] == 'short':
        filename = "Shorts/BB_short_%d.jpg"%i
        cv2.imwrite(filename,img)
    else:
        filename = "Shirts/BB_shirt_%d.jpg"%i
        cv2.imwrite(filename,img)
    i+=1

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

1 Ответ

0 голосов
/ 13 февраля 2020

Отслеживайте индекс с помощью enumerate (), а затем добавляйте индекс к имени файла.

list_idxs = idxs.flatten()
for index, i in enumerate(list_idxs):
    # extract the bounding box coordinates
    (x, y) = (boxes[i][0], boxes[i][1])
    (w, h) = (boxes[i][2], boxes[i][3])

    # draw a bounding box rectangle and label on the image
    color = [int(c) for c in COLORS[classIDs[i]]]
    cv2.rectangle(image, (x, y), (x + w, y + h), color, 2)
    text = "{}: {:.4f}".format(LABELS[classIDs[i]], confidences[i])
    cv2.putText(image, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX,
        0.5, color, 2)
    # Saving our detected objects with respect to the Label
    img=image[y:y + h,x:x + w]
    if LABELS[classIDs[i]] == 'short':
        filename = f"Shorts/BB_short_{i}_{index}.jpg"
        cv2.imwrite(filename,img)
    else:
        filename = f"Shirts/BB_shirt_{i}_{index}.jpg"
        cv2.imwrite(filename,img)
    i+=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...