基本上我正在编写的代码需要在每帧计算的值前面添加一个字符串
例如:
面部1 :(眼睛纵横比),(嘴长宽比)
面部2 :(眼睛// //),(// // //)
......依此类推,取决于使用dlib预测器找到的面数。
此处所需的字符串是“Face1:” |||| “Face2:” ...已找到其他值
以下是代码:
# Start capturing WebCam
#cap = cv2.VideoCapture(0)
framecount = 0
while True:
ret, frame = cap.read()
framecount += 1
frame = imutils.resize(frame, width = 1500)
if ret:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
rects = detector(gray, 0)
for rect in rects:
x = rect.left()
y = rect.top()
x1 = rect.right() - x
y1 = rect.bottom() - y
landmarks = np.matrix([[p.x, p.y] for p in predictor(frame, rect).parts()])
left_eye = landmarks[LEFT_EYE_POINTS]
right_eye = landmarks[RIGHT_EYE_POINTS]
inner_mouth = landmarks[MOUTH_INNER_POINTS]
outer_mouth = landmarks[MOUTH_OUTLINE_POINTS]
left_eye_hull = cv2.convexHull(left_eye)
right_eye_hull = cv2.convexHull(right_eye)
inner_mouth_hull = cv2.convexHull(inner_mouth)
outer_mouth_hull = cv2.convexHull(outer_mouth)
# drawing the contours on frame
cv2.drawContours(frame, [left_eye_hull], -1, (0, 255, 0), 1)
cv2.drawContours(frame, [right_eye_hull], -1, (0, 255, 0), 1)
# Eye aspect ratio and Mouth aspect ratio
ear_left = eye_aspect_ratio(left_eye)
ear_right = eye_aspect_ratio(right_eye)
MAR = mouth_aspect_ratio(inner_mouth)
## This part below:
print(framecount," {:.2f}".format(ear_left), " {:.2f}".format(MAR))
print("Number of faces: ", len(rects))
第一个打印功能将打印出视频帧并显示眼睛纵横比和嘴宽高比。如果有多个面部,它将重复帧数不止一次,但会有不同的值。
所以,它做了我需要做的事情,但是我想在每个值之前添加一个名字。
第二个打印功能显示视频中存在的面部数量,在我的情况下,它显示三个面部的数字3。
输出示例:
使用枚举输出的示例: