Спасибо за чтение данного вопроса . Буду рад, если подскажите решение моеи проблемы. Голова вроде как понимает, но не знаю как реалиzовать из за небольшого опыта в программировании. Позвольте объяснить.
Я использую детектор, чтобы получить координаты прямоугольника объекта и нарисовать его на фотографии. Сам код:
def run(self, image_file):
print(image_file)
img = cv2.imread(image_file)
min_h = int(max(img.shape[0] / self.min_height_dec, self.min_height_thresh))
min_w = int(max(img.shape[1] / self.min_width_dec, self.min_width_thresh))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = self.face_cascade.detectMultiScale(gray, 1.3, minNeighbors=5, minSize=(min_h, min_w))
images = []
for i, (x, y, w, h) in enumerate(faces):
images.append(self.sub_image('%s/%s-%d.jpg' % (self.tgtdir, self.basename, i + 1), img, x, y, w, h))
print('%d faces detected' % len(images))
for (x, y, w, h) in faces:
self.draw_rect(img, x, y, w, h)
outfile = '%s/%s.jpg' % (self.tgtdir, self.basename)
cv2.imwrite(outfile, img)
return images, outfile
Здесь, как вы видите, вырезание и draw_rect как другой div, но это не важно. В то же время, из вырезанных лиц, мы предполагаем пол и возраст, с помошью кода из другого фаила, и получаем результат в виде текста в консоль:
output /= batch_sz
best = np.argmax(output)
best_choice = (label_list[best], output[best])
print('Guess @ 1 %s, prob = %.2f' % best_choice)
nlabels = len(label_list)
if nlabels > 2:
output[best] = 0
second_best = np.argmax(output)
print('Guess @ 2 %s, prob = %.2f' % (label_list[second_best], output[second_best]))
return best_choice
Теперь позвольте мне задать свой вопрос - как я могу создать список и захватить:
1) все координаты x, y, w, h прямоугольников
2) Результат Guess
Я хочу использовать эти данные в другом файле (той же программе), чтобы нарисовать прямоугольник с результатом Guess сверху и сохранить его как новую фотографию.
Моя идея заключалась в создании специального anno.list и использовании его в качестве контейнера для этих данных, вызывая их в моем рабочем файле и использования для нанесения на фотографию. У кого-нибудь есть идеи, как я могу это сделать? Я попытался это сделать, но все, что я нашел, - это создание списка в том же файле, но у меня есть два разных файла (обнаружение лица и Guess). Большое спасибо за чтение и ваши подсказки! Я буду счастлив, если вы сможете объяснить это подробно. Извиняюсь за ошибки, нет Русскои клавиатуры.