Я хочу обрезать свое изображение на основе координатных блоков обнаруженных объектов, один из которых с classID = 1.
Может быть несколько объектов с одинаковым идентификатором или другими классами. Моя проблема в том, что мой код возвращает только одно обрезанное изображение. Как я могу вернуть все обрезанные изображения с ClassID = 1?
У меня всего 6 классов, в которых меня интересует ClassID = 1.
# initializing bounding boxes, confidences, and classIDs.
boxes = []
confidences = []
classIDs = []
for output in layersOutputs:
# loop over each of the detections
for detection in output:
# extract the class ID and confidence
scores = detection[5:]
classID = np.argmax(scores)
confidence = scores[classID]
# filter out weak predictions
if confidence > c_threshold:
box = detection[0:4] * np.array([W, H, W, H])
(centerX, centerY, width, height) = box.astype("int")
#coordinates
x = int(centerX - (width / 2))
y = int(centerY - (height / 2))
# update bounding box coordinates, confidences, classIDs
boxes.append([x, y, int(width), int(height)])
confidences.append(float(confidence))
classIDs.append(classID)
# applying non maximum suppression
ind = cv.dnn.NMSBoxes(boxes, confidences, c_threshold, nms)
if len(ind) > 0:
# loop over the indexes that we want to keep
for i in ind.flatten():
# extract the bounding box coordinates
(x, y) = (boxes[1][0], boxes[1][1])
(w, h) = (boxes[1][2], boxes[1][3])
for i in classIDs:
if i != 1:
continue
# extract the bounding box coordinates
(x, y) = (boxes[i][0], boxes[i][1])
(w, h) = (boxes[i][2], boxes[i][3])
# crop that part of image which contains desired object
image = image[y:y + h, x:x + w]
cv.imshow("Image", image)
path = '/path to folder'
cv.imwrite(os.path.join(path, 'PImage.jpg'), image)
#
cv.waitKey(0)
Отредактировано: Как вы можете видеть на этой картине много видов животных, я пытаюсь обрезать часть изображения с собаками. Я уже получил ограничивающие прямоугольники, связанные с частями собаки (это означает, что я знаю, где находится местоположение прямоугольника с собакой в нем, как показано на фотографии)
Я хочу обрезать те прямоугольники, которые я указал на изображении. У собаки класс ID = 1. У меня есть кошка класса и другие животные с разными индексами.