-1

我想检测视频帧中的人脸并删除背景等其他元素,只想专注于面部区域,为此我需要使用 viola jones 算法,czn 任何人都给我一个提示或合适的答案这个。

import cv2
import sys
imagep='6.jpg'#sys.argv[1]
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
i=cv2.imread(imagep)
gray=cv2.imread(imagep,cv2.COLOR_BGR2GRAY)
f=face_cascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30,30),flags=cv2.CASCADE_SCALE_IMAGE)
print("Found {0} faces!".format(len(f)))
for(x,y,w,h) in f:
  cv2.rectangle(i,(x,y),(x+w,y+h),(0,255,0),2)
  cv2.imshow("Faces found",i)
  cv2.waitKey(0)
4

1 回答 1

-1

一旦有了包含人脸的矩形的左上角和右下角坐标,您就可以根据这些坐标裁剪原始图像。假设初始图像存储在 frame 变量中,按照代码

face = face_recognition.detectMultiScale(frame, scaleFactor = 1.8, minNeighbors = 5) #detects coordinates of face
resultant_image = frame[face[0][1] : (face[0][1] + face[0][3]),face[0][0] : (face[0][0] + face[0][2]), :] # gives you cropped image
于 2021-10-16T07:07:42.150 回答