if cap.get(cv2.CAP_PROP_POS_FRAMES) == cap.get(cv2.CAP_PROP_FRAME_COUNT): cap.set(cv2.CAP_PROP_POS_FRAMES, 0) success, img = cap.read() img, faces = detector.findFaceMesh(img, draw=False) if faces: face = faces[0] for id in idList: cv2.circle(img, face[id], 5, color, cv2.FILLED) leftUp = face[159] leftDown = face[23] leftLeft = face[130] leftRight = face[243] lenghtVer, _ = detector.findDistance(leftUp, leftDown) lenghtHor, _ = detector.findDistance(leftLeft, leftRight) cv2.line(img, leftUp, leftDown, (0, 200, 0), 3) cv2.line(img, leftLeft, leftRight, (0, 200, 0), 3) ratio = int((lenghtVer / lenghtHor) * 100) ratioList.append(ratio) if len(ratioList) > 3: ratioList.pop(0) ratioAvg = sum(ratioList) / len(ratioList) if ratioAvg < 35 and counter == 0: blinkCounter += 1 color = (0, 200, 0) counter = 1
"Thank you." ] sen = 25 while True: success, img = cap.read() imgText = np.zeros_like(img) img, faces = detector.findFaceMesh(img, draw=False) if faces: face = faces[0] pointLeft = face[145] pointRight = face[374] w, _ = detector.findDistance(pointLeft, pointRight) W = 6.3 # Finding distance f = 840 d = (W * f) / w print(d) cvzone.putTextRect(img, f'Depth: {int(d)}cm', (face[10][0] - 100, face[10][1] - 50), scale=2) for i, text in enumerate(textList): singleHeight = 20 + int((int(d / sen) * sen) / 4) scale = 0.4 + (int(d / sen) * sen) / 100
while True: success, img = cap.read() img = cv2.flip(img, 1) img, faces = detector.findFaceMesh(img, draw=False) if faces: face = faces[0] eyeLeft = [27, 23, 130, 243] # up, down, left, right eyeRight = [257, 253, 463, 359] # up, down, left, right mouth = [11, 16, 57, 287] # up, down, left, right faceId = [27, 23, 130, 243, 257, 253, 463, 359, 11, 16, 57, 287] #calculate eye left distance ratio eyeLeft_ver, _ = detector.findDistance(face[eyeLeft[0]], face[eyeLeft[1]]) eyeLeft_hor, _ = detector.findDistance(face[eyeLeft[2]], face[eyeLeft[3]]) eyeLeft_ratio = int((eyeLeft_ver / eyeLeft_hor) * 100) # calculate eye right distance ratio eyeRight_ver, _ = detector.findDistance(face[eyeRight[0]], face[eyeRight[1]]) eyeRight_hor, _ = detector.findDistance(face[eyeRight[2]], face[eyeRight[3]]) eyeRight_ratio = int((eyeRight_ver / eyeRight_hor) * 100) # calculate mouth distance ratio mouth_ver, _ = detector.findDistance(face[mouth[0]], face[mouth[1]]) mouth_hor, _ = detector.findDistance(face[mouth[2]], face[mouth[3]]) mouth_ratio = int((mouth_ver / mouth_hor) * 100) #display text on image