python - 如何从 haar 级联中获取完整的头部图像
问题描述
我使用以下代码使用 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
表示您不需要更改的脸的宽度。
结论:将其更改为gray[y-20:y+h, x:x+w]
第 22 行内的cv2.imwrite()
.
推荐阅读
- javascript - 在我接受用户的回答之前,如何在控制台上显示我的问题?
- c# - C#如何从特定单元格datagridview中获取值
- assembly - 如何在emu8086中创建和绘制精灵?
- angular - 角度错误:http://localhost:3000/login: 404 Not Found 的 Http 失败响应
- c++ - 当您指定 /MT 时,静态库是否包含 CRT,还是仅适用于 DLL?
- regex - 匹配 Perl 6 分隔注释的 Perl 6 正则表达式
- php - PHP Image:生成的图像在生产服务器上有右下角黑色边框,但在我的本地机器上没有
- javascript - JavaScript函数执行面临的问题
- c++ - Poco编译错误找不到-lPocoDataMySQL
- c# - UWP - 带有序列条件的自动 if 语句