Подведите итог проблемы Я запускаю список изображений через модель CNN, используя модули OpenCV и face_recognition. Я запустил запись несколько раз, но продолжаю оканчивать список большим, чем ввод.
Фон того, что было опробовано
a. Сначала закодируйте изображения, затем запустите вторичный процесс, в результате которого каждая закодированная запись запускается против себя (i + 1), используя face_recognition.compare_faces
.
b. Кодирование изображений с последующей загрузкой закодированного файла огурцов и перечислением каждого изображения из исходного места извлечения файлов.
Примечание к данным:
- imagePaths
- списокиз 293 .png файлов.
- encodings.pickle
- это словарь тех изображений в imagePaths
, которые уже были закодированы.
Показать некоторый код
Исходный код был изменен по сравнению с показанным здесь .
data = pickle.loads(open("encodings.pickle","rb").read())
imagePaths = list(paths.list_images("./images")
matchesOutput = []
for (i,imagePath) in enumerate(imagePaths):
d = dt.datetime.now()
print(d.isoformat())
print("[INFO] processing image {}/{}".format(i + 1,
len(imagePaths)))
image = cv2.imread(imagePath)
rgb = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
boxes = face_recognition.face_locations(rgb,model = 'cnn')
encodings = face_recognition.face_encodings(rgb,boxes)
names = []
for encoding in encodings:
matches = face_recognition.compare_faces(data["encodings"],encoding)
name = "Unknown"
if True in matches:
matchedIdx=[i for (i,b) in enumerate (matches) if b]
matchesOutput.append(matchedIdxs)
Опишите ожидаемое |фактические результаты:
Ожидается : список (matchesOutput
) длины 293
. Где каждый индекс равен matchedIdxs
для .
Actual : список (matchesOutput
) длиной 330 .