Gagazet
@Gagazet

Как создать annolsit\list с данными из разных фаилов?

Спасибо за чтение данного вопроса . Буду рад, если подскажите решение моеи проблемы. Голова вроде как понимает, но не знаю как реали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). Большое спасибо за чтение и ваши подсказки! Я буду счастлив, если вы сможете объяснить это подробно. Извиняюсь за ошибки, нет Русскои клавиатуры.
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
qlkvg
@qlkvg
python backend developer
Если я правильно понял постановку задачи, вам нужен не список, а словарь. Структура должна быть примерно такая:
faces_dict = {"face1": {"face_rect": [x, y, w. h], "face_features": "features"},
              "face2": ...
              }

Доступ к элементам словаря осуществляется вот так:
faces_dict["face1"]["face_rect"]
Если необходимо результат держать в файле, удобнее всего сделать дамп словаря как json файла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы