Gesichtserkennung in Echtzeit
Verfasst: Sonntag 19. November 2023, 19:57
Hallo liebe Community,
Ich beschäftige mich seit neuestem mit Python da ich es in meiner Technikerschule für mein Projekt benötige.
Dieses Projekt beinhaltet eine Echtzeit Gesichtserkennung, die ich mithilfe eines Tutorials programmiert habe und zuerst testen wollte, bevor Ich es auf meine Anforderungen anpasse.
Nun wird mein Gesicht erkannt, jedoch zeigt mir das Bildfenster "No match!" an und gibt mir folgenden Fehler aus:
Fehler bei der Gesichtserkennung: 'Unable to synchronously open object (bad symbol table node signature)'
Die verwendeten Bibliotheken sind aktuell und das Testbild kann ganz normal geöffnet werden und ist nicht beschädigt.
Hier noch mein Code:
import threading
import cv2
from deepface import DeepFace
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # Kamera initialisieren
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) # Video Breite
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # Video Höhe
counter = 0
face_match = False
known_img = cv2.imread("test_image.jpg")
def check_face(frame):
global face_match
try:
result = DeepFace.verify(frame, known_img.copy())
if result['verified']:
face_match = True
else:
face_match = False
except Exception as e:
print(f"Fehler bei der Gesichtserkennung: {e}")
face_match = False
while True:
ret, frame = cap.read()
if ret:
if counter % 100 == 0:
try:
threading.Thread(target=check_face, args=(frame.copy(),)).start()
except Exception as e:
print(f"Fehler beim Starten des Threads: {e}")
counter += 1
if face_match:
cv2.putText(frame, "Match!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 3)
else:
cv2.putText(frame, "No match!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 3)
cv2.imshow("video", frame)
key = cv2.waitKey(1)
if key == ord("q"):
break
cv2.destroyAllWindows()
Würde mich sehr freuen, wenn mir jemand weiter helfen könnte, da Ich noch nicht so viel Erfahrung mit Python gesammelt habe.
Mit freundlichen Grüßen,
Niklas
Ich beschäftige mich seit neuestem mit Python da ich es in meiner Technikerschule für mein Projekt benötige.
Dieses Projekt beinhaltet eine Echtzeit Gesichtserkennung, die ich mithilfe eines Tutorials programmiert habe und zuerst testen wollte, bevor Ich es auf meine Anforderungen anpasse.
Nun wird mein Gesicht erkannt, jedoch zeigt mir das Bildfenster "No match!" an und gibt mir folgenden Fehler aus:
Fehler bei der Gesichtserkennung: 'Unable to synchronously open object (bad symbol table node signature)'
Die verwendeten Bibliotheken sind aktuell und das Testbild kann ganz normal geöffnet werden und ist nicht beschädigt.
Hier noch mein Code:
import threading
import cv2
from deepface import DeepFace
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # Kamera initialisieren
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) # Video Breite
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # Video Höhe
counter = 0
face_match = False
known_img = cv2.imread("test_image.jpg")
def check_face(frame):
global face_match
try:
result = DeepFace.verify(frame, known_img.copy())
if result['verified']:
face_match = True
else:
face_match = False
except Exception as e:
print(f"Fehler bei der Gesichtserkennung: {e}")
face_match = False
while True:
ret, frame = cap.read()
if ret:
if counter % 100 == 0:
try:
threading.Thread(target=check_face, args=(frame.copy(),)).start()
except Exception as e:
print(f"Fehler beim Starten des Threads: {e}")
counter += 1
if face_match:
cv2.putText(frame, "Match!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 3)
else:
cv2.putText(frame, "No match!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 3)
cv2.imshow("video", frame)
key = cv2.waitKey(1)
if key == ord("q"):
break
cv2.destroyAllWindows()
Würde mich sehr freuen, wenn mir jemand weiter helfen könnte, da Ich noch nicht so viel Erfahrung mit Python gesammelt habe.
Mit freundlichen Grüßen,
Niklas