如何从 haar 级联中获取完整的头部图像
How to get full head image from haar cascade
我使用以下代码使用 Haar 级联分类器捕捉人脸,但仍然没有得到完整的头部图像
from imutils.video import WebcamVideoStream
import os
import time
from datetime import datetime
from imutils.video import FPS
import cv2
cascadePath = "/home/pi/opencv-3.3.0/data/haarcascades/haarcascade_frontalface_default.xml"
eye_cascade = cv2.CascadeClassifier('/home/pi/opencv-3.3.0/data/haarcascades/haarcascade_eye.xml')
faceCascade = cv2.CascadeClassifier(cascadePath);
fn = input('Enter your Folder name: ')
os.system("mkdir "+fn)
vs = WebcamVideoStream(src=0).start()
while 1:
time.sleep(0.05)
frame = vs.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(gray, 1.1, 6)
for (x,y,w,h) in faces:
cv2.imwrite(fn+"/"+ datetime.now().strftime("%H:%M:%S.%f") + ".jpg", gray[y:y+h+30,x:x+w+20])
cv2.imshow('frame',frame)
key = cv2.waitKey(1) & 0xFF
为了捕捉头部,您还需要减少开始裁剪脸部的初始点。
在您的代码中您使用了 gray[y:y+h+30,x:x+w+20]
。
y
考虑到了裁剪脸的高度。这是您需要减少初始裁剪点的地方。
x
表示不需要改变的脸的宽度。
结论:cv2.imwrite()
.
中第22行改成gray[y-20:y+h, x:x+w]
我使用以下代码使用 Haar 级联分类器捕捉人脸,但仍然没有得到完整的头部图像
from imutils.video import WebcamVideoStream
import os
import time
from datetime import datetime
from imutils.video import FPS
import cv2
cascadePath = "/home/pi/opencv-3.3.0/data/haarcascades/haarcascade_frontalface_default.xml"
eye_cascade = cv2.CascadeClassifier('/home/pi/opencv-3.3.0/data/haarcascades/haarcascade_eye.xml')
faceCascade = cv2.CascadeClassifier(cascadePath);
fn = input('Enter your Folder name: ')
os.system("mkdir "+fn)
vs = WebcamVideoStream(src=0).start()
while 1:
time.sleep(0.05)
frame = vs.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(gray, 1.1, 6)
for (x,y,w,h) in faces:
cv2.imwrite(fn+"/"+ datetime.now().strftime("%H:%M:%S.%f") + ".jpg", gray[y:y+h+30,x:x+w+20])
cv2.imshow('frame',frame)
key = cv2.waitKey(1) & 0xFF
为了捕捉头部,您还需要减少开始裁剪脸部的初始点。
在您的代码中您使用了 gray[y:y+h+30,x:x+w+20]
。
y
考虑到了裁剪脸的高度。这是您需要减少初始裁剪点的地方。x
表示不需要改变的脸的宽度。
结论:cv2.imwrite()
.
gray[y-20:y+h, x:x+w]