Smart Spy (1 / 3 steg)
Steg 1:
Möta upptäckten i python med en webbkamera
Förkunskaper:
OpenCV installerat (se tidigare blogginlägg för detaljer) en fungerande webbkamera
Låt oss gå in koden från här https://github.com/mugiluri/Face-Detection-with-camera
importera cv2
importera sys
cascPath = sys.argv[1]
faceCascade = cv2. CascadeClassifier(cascPath)
video_capture = cv2. VideoCapture(0)
samtidigt sant:
# Fånga bildruta-för-bildruta
ret, ram = video_capture.read()
grå = cv2.cvtColor (ram, cv2. COLOR_BGR2GRAY)
ansikten = faceCascade.detectMultiScale ()
grå,
scaleFactor = 1.1,
minNeighbors = 5,
minstorlek = (30, 30),
Flags=CV2.CV.CV_HAAR_SCALE_IMAGE)
# Rita en rektangel runt ansikten
för (x, y, w, h) i ansikten:
CV2.Rectangle (ram, (x, y), (x + b, y + h), (0, 255, 0), 2)
# Visa den resulterande bildrutan
CV2.imshow ("Video", ram)
om cv2.waitKey(1) & 0xFF == ord('q'):
Break
# När allt är gjort, släpp fångst
video_capture.release()
CV2.destroyAllWindows()
Förklaring:
importera cv2
importera sys
cascPath = sys.argv[1] faceCascade = cv2. CascadeClassifier(cascPath)
Skapa en ansikte kaskad
video_capture = cv2. VideoCapture(0)
Ställa in videokälla till standard webcam
Obs: Du kan också ange ett filnamn här, och Python kommer att läsa i videofilen. Dock måste du ha ffmpeg https://www.ffmpeg.org/ installerat för att sedan OpenCV själv inte kan avkoda komprimerad video. Ffmpeg fungerar som fronten för OpenCV, och helst det bör sammanställas direkt i OpenCV. Detta är inte lätt att göra, speciellt på Windows.
samtidigt sant:
# Fånga bildruta-för-bildruta ret, ram = video_capture.read()
Vi fånga video. Funktionen read() läser en bildruta från video källan, som i detta exempel är webbkameran. Sedan returnerar:
Den faktiska videobildruta Läs (en ram på varje slinga) en återgång codeThe returkod berättar för oss om vi har slut-ramar, som kommer att hända om vi läser från en fil. Detta spelar ingen roll när man läser från webbkameran, eftersom vi kan spela för alltid, så vi kommer att ignorera den.
# Fånga bildruta-för-bildruta
ret, ram = video_capture.read()
grå = cv2.cvtColor (ram, cv2. COLOR_BGR2GRAY)
ansikten = faceCascade.detectMultiScale (grå, scaleFactor = 1.1, minNeighbors = 5, minstorlek = (30, 30), flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
# Rita en rektangel runt ansikten för (x, y, w, h) i ansikten: cv2.rectangle (ram, (x, y), (x + b, y + h), (0, 255, 0), 2)
# Display den resulterande frame cv2.imshow ("Video", ram)
Forskande för ansiktet i våra infångad ram.
om cv2.waitKey(1) & 0xFF == ord('q'):
Break
Vänta på "q" för att tryckas och vi avsluta skriptet.
# När allt är gjort, släpp fångst
video_capture.release() cv2.destroyAllWindows()
Städa upp