add .py file for webcam detection
The corresponding image for webcam detection added.
Esse commit está contido em:
Arquivo binário não exibido.
|
Depois Largura: | Altura: | Tamanho: 141 KiB |
+67
-308
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -0,0 +1,101 @@
|
||||
'''
|
||||
Facial Landmark Detection in Python with OpenCV
|
||||
|
||||
Detection from web cam
|
||||
'''
|
||||
|
||||
# Import Packages
|
||||
import cv2
|
||||
import os
|
||||
import urllib.request as urlreq
|
||||
import numpy as np
|
||||
|
||||
|
||||
# save face detection algorithm's url in haarcascade_url variable
|
||||
haarcascade_url = "https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_alt2.xml"
|
||||
|
||||
# save face detection algorithm's name as haarcascade
|
||||
haarcascade = "haarcascade_frontalface_alt2.xml"
|
||||
haarcascade_clf = "data/" + haarcascade
|
||||
|
||||
# check if data folder is in working directory
|
||||
if (os.path.isdir('data')):
|
||||
# check if haarcascade is in data directory
|
||||
if (haarcascade in os.listdir('data')):
|
||||
print("File exists")
|
||||
else:
|
||||
# download file from url and save locally as haarcascade_frontalface_alt2.xml
|
||||
urlreq.urlretrieve(haarcascade_url, haarcascade_clf)
|
||||
print("File downloaded")
|
||||
else:
|
||||
# create data folder in current directory
|
||||
os.mkdir('data')
|
||||
# download haarcascade to data folder
|
||||
urlreq.urlretrieve(haarcascade_url, haarcascade_clf)
|
||||
print("File downloaded")
|
||||
|
||||
# create an instance of the Face Detection Cascade Classifier
|
||||
detector = cv2.CascadeClassifier(haarcascade_clf)
|
||||
|
||||
# save facial landmark detection model's url in LBFmodel_url variable
|
||||
LBFmodel_url = "https://github.com/kurnianggoro/GSOC2017/raw/master/data/lbfmodel.yaml"
|
||||
|
||||
# save facial landmark detection model's name as LBFmodel
|
||||
LBFmodel = "LFBmodel.yaml"
|
||||
LBFmodel_file = "data/" + LBFmodel
|
||||
|
||||
# check if data folder is in working directory
|
||||
if (os.path.isdir('data')):
|
||||
# check if Landmark detection model is in data directory
|
||||
if (LBFmodel in os.listdir('data')):
|
||||
print("File exists")
|
||||
else:
|
||||
# download file from url and save locally as haarcascade_frontalface_alt2.xml
|
||||
urlreq.urlretrieve(LBFmodel_url, LBFmodel_file)
|
||||
print("File downloaded")
|
||||
else:
|
||||
# create data folder in current directory
|
||||
os.mkdir('data')
|
||||
# download Landmark detection model to data folder
|
||||
urlreq.urlretrieve(LBFmodel_url, LBFmodel_file)
|
||||
print("File downloaded")
|
||||
|
||||
# create an instance of the Facial landmark Detector with the model
|
||||
landmark_detector = cv2.face.createFacemarkLBF()
|
||||
landmark_detector.loadModel(LBFmodel)
|
||||
|
||||
# get image from webcam
|
||||
webcam_cap = cv2.VideoCapture(0)
|
||||
|
||||
while(True):
|
||||
# read webcam
|
||||
_, frame = webcam_cap.read()
|
||||
|
||||
# convert frame to grayscale
|
||||
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
||||
|
||||
# Detect faces using the haarcascade classifier on the "grayscale image"
|
||||
faces = detector.detectMultiScale(gray)
|
||||
|
||||
|
||||
for (x,y,w,d) in faces:
|
||||
# Detect landmarks on "gray"
|
||||
_, landmarks = landmark_detector.fit(gray, np.array(faces))
|
||||
|
||||
for landmark in landmarks:
|
||||
for x,y in landmark[0]:
|
||||
# display landmarks on "frame/image,"
|
||||
# with blue colour in BGR and thickness 2
|
||||
cv2.circle(frame, (x, y), 1, (255, 0, 0), 2)
|
||||
|
||||
# save last instance of detected image
|
||||
cv2.imwrite('face-detect.jpg', frame)
|
||||
|
||||
# Show image
|
||||
cv2.imshow("frame", frame)
|
||||
|
||||
# terminate the capture window
|
||||
if cv2.waitKey(20) & 0xFF == ord('q'):
|
||||
webcam_cap.release()
|
||||
cv2.destroyAllWindows()
|
||||
break
|
||||
Referência em uma Nova Issue
Bloquear um usuário