Stap 1:
De opsporing van het gezicht In python met een webcam
Eerste vereisten:
OpenCV geïnstalleerd (Zie het vorige blogpost voor details) A werkende webcam
Laten we in de code genomen van deze https://github.com/mugiluri/Face-Detection-with-camera
importeren van cv2
importeren van sys
cascPath = sys.argv[1]
faceCascade = cv2. CascadeClassifier(cascPath)
video_capture = cv2. VideoCapture(0)
terwijl juist:
# Vangen frame-voor-frame
RET, frame = video_capture.read()
grijs = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)
gezichten = faceCascade.detectMultiScale ()
grijs,
scaleFactor = 1.1,
minNeighbors = 5,
Minimaal = (30, 30),
Flags=CV2.CV.CV_HAAR_SCALE_IMAGE)
# Tekent u een rechthoek rond de gezichten
voor (x, y, w, h) in gezichten:
CV2.Rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
# Display het resulterende frame
CV2.imshow ('Video', frame)
Als cv2.waitKey(1) & 0xFF == ord('q'):
pauze
# Wanneer alles is gedaan, laat u de opname
video_capture.release()
CV2.destroyAllWindows()
Uitleg:
importeren van cv2
importeren van sys
cascPath = sys.argv[1] faceCascade = cv2. CascadeClassifier(cascPath)
Creëren van een gezicht cascade
video_capture = cv2. VideoCapture(0)
Het instellen van de videobron op de standaard-webcam
Opmerking: U kunt ook een bestandsnaam hier geven, en Python zal lezen in het videobestand. Echter, moet u dat ffmpeg https://www.ffmpeg.org/ geïnstalleerd voor dat aangezien OpenCV zelf gecomprimeerde video niet kan decoderen. Ffmpeg fungeert als front-end voor OpenCV en, idealiter, het rechtstreeks in OpenCV dient te worden verzameld. Dit is niet eenvoudig om te doen, vooral op Windows.
terwijl juist:
# Capture frame-voor-frame ret, frame = video_capture.read()
Wij vangen de video. De functie read() leest één frame van de video bron, die in dit voorbeeld de webcam is. Geeft als resultaat:
De werkelijke videoframe Lees (een frame op elke lus) een terugkeer codeThe return code vertelt ons dat als we hebben lopen van frames, die gebeuren zal als wij uit een bestand lezen. Dit maakt niet uit bij het lezen van de webcam, aangezien we voor eeuwig, opnemen kunt, zodat wij het zal negeren.
# Vangen frame-voor-frame
RET, frame = video_capture.read()
grijs = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)
gezichten = faceCascade.detectMultiScale (grijs, scaleFactor = 1.1, minNeighbors = 5, minimaal = (30, 30), flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
# Tekent u een rechthoek rond de gezichten voor (x, y, w, h) in gezichten: cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
# Display de resulterende frame cv2.imshow ('Video', frame)
Op zoek naar het gezicht in onze opgenomen frame.
Als cv2.waitKey(1) & 0xFF == ord('q'):
pauze
Wachten op de 'q' toets ingedrukt worden dan we het script afsluiten.
# Wanneer alles is gedaan, laat u de opname
video_capture.release() cv2.destroyAllWindows()
Opruimen