Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
face_regressor = dlib.shape_predictor(dlib_landmark_model)
if args.dlib_bbox:
face_detector = dlib.get_frontal_face_detector()
# 3. forward
tri = sio.loadmat('visualize/tri.mat')['tri']
transform = transforms.Compose([ToTensorGjz(), NormalizeGjz(mean=127.5, std=128)])
for img_fp in args.files:
img_ori = cv2.imread(img_fp)
if args.dlib_bbox:
rects = face_detector(img_ori, 1)
else:
rects = []
if len(rects) == 0:
rects = dlib.rectangles()
rect_fp = img_fp + '.bbox'
lines = open(rect_fp).read().strip().split('\n')[1:]
for l in lines:
l, r, t, b = [int(_) for _ in l.split(' ')[1:]]
rect = dlib.rectangle(l, r, t, b)
rects.append(rect)
pts_res = []
Ps = [] # Camera matrix collection
poses = [] # pose collection, [todo: validate it]
vertices_lst = [] # store multiple face vertices
ind = 0
suffix = get_suffix(img_fp)
for rect in rects:
# whether use dlib landmark to crop image, if not, use only face bbox to calc roi bbox for cropping
if args.dlib_landmark:
def _array_to_dlib_rectangles(rects_array):
"""
Function to convert array of rectangles (in format [[x1,y1,w1,h1],[x2,y2,w2,h2],...]) to dlib regtangles objects.
Usually input array is a results of OpenCV face detection and output dlib regtangles are used for landmark detection.
:param rects_array: array with results of OpenCV face detection
:return: dlib rectangles object
"""
rects_dlib = dlib.rectangles()
for (left, top, right, bottom) in rects_array:
rects_dlib.append(dlib.rectangle(
int(left),
int(top),
int(right),
int(bottom)))
return rects_dlib
df = pd.DataFrame(columns=['FID', 'PID', 'face_id', 'filename', 'left', 'top', 'right', 'bottom', 'confidence'])
print("Number of faces detected: {}".format(len(dets)))
counter = 0
for faces, prefix in zip(dets, f_prefix):
# build dataframe of face detections and corresponding metadata
for i, d in enumerate(faces):
f_name = prefix + str(i)
df.loc[counter] = [fids[counter], pids[counter], i, f_name, d.rect.left(), d.rect.top(), d.rect.right(), d.rect.bottom(), d.confidence]
print("Detection {}: Left: {} Top: {} Right: {} Bottom: {} Confidence: {}".format(
i, d.rect.left(), d.rect.top(), d.rect.right(), d.rect.bottom(), d.confidence))
rects = dlib.rectangles()
rects.extend([d.rect for d in dets])
counter += 1
print(counter, "faces detected")
# write dataframe to CSV
df.to_csv("dnn_face_detections.csv")
print("DLIB's CNN FACE DETECTOR: DONE")