как закодировать фотографию и сравнить ее с вводом с веб-камеры?

#python #numpy #opencv #face-recognition #python-3.8

#python #numpy #opencv #распознавание лиц #python-3.8

Вопрос:

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

 import cv2
import numpy as np
import face_recognition
import os

path = 'pics'
images = []
classNames = []
myList = os.listdir(path)
print(myList)
for cl in myList:
    curImg = cv2.imread(f'{path}/{cl}')
    images.append(curImg)
    classNames.append(os.path.splitext(cl)[0])
print(classNames)


def findEncodings(images):
    encodeList = []
    for img in images:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        encode = face_recognition.face_encodings(img)[0]

        encodeList.append(encode)



    return encodeList

encodeListknown = findEncodings(images)
print(findEncodings(images))

cap = cv2.VideoCapture(0)


while True:
    success, img = cap.read()
    imgs = cv2.resize(img,(0,0),None,0.25,0.25)
    imgs = cv2.cvtColor(imgs, cv2.COLOR_BGR2RGB)
    facesCurframe = face_recognition.face_locations(imgs)
    encodescurframe = face_recognition.face_encodings(imgs,facesCurframe)

    for encodeface, faceloc in zip(encodescurframe,facesCurframe):
        matches = face_recognition.compare_faces(encodeListknown,encodeface)
        facedis = face_recognition.face_distance(encodeListknown,encodeface)
        print(facedis)
  

эта программа предполагает получение изображений из выбранного файла и преобразование в черно-белое, а затем сравнение фотографий с человеком перед веб
-камерой, что мне делать?

Ответ №1:

Вы преждевременно завершаете свою функцию кодирования. return Оператор должен быть вне цикла:

 def findEncodings(images):
    encodeList = []
    for img in images:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        encode = face_recognition.face_encodings(img)[0]

        encodeList.append(encode)



    return encodeList  ## <-- Move back the indentation by 1 level
  

Комментарии:

1. большое спасибо, но после того, как я переместил его обратно, он сообщает мне «индекс списка вне диапазона», и я пытаюсь удалить [0], но в итоге выдает другую ошибку

2. спасибо, это решено, я не знаю как, но это не дает мне никаких ошибок!!!