python - 带有面部跟踪器的 python 运动面具
问题描述
我想做一个工作:当网络摄像头检测到人脸时,人脸跟踪器方块之外的空间都是黑色的。面部跟踪器的方块变成了人脸的运动蒙版。我有更好的方法来完成这段代码吗?
这是我的代码的屏幕截图:
这是我对最终工作的期望:
这是我到目前为止写的代码:
import cv2
import numpy as np
import serial
import time
import sys
cap = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml' )
if not cap.isOpened():
print("Cannot open camera")
exit()
while(True):
ret, frame = cap.read()
mask = np.zeros(frame.shape[:2], dtype=np.uint8)
for(x) in mask:
x = 325
for(y) in mask:
y = 155
for(r) in mask:
r = 300
mask = cv2.circle(mask, (x, y), r, (255, 255, 255), -1)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
frame = cv2.add(frame, np.zeros(np.shape(frame), dtype=np.uint8), mask=mask)
for(x,y,w,h) in faces:
cv2.rectangle(frame, (x,y),(x+w,y+h), (255,255,0), 2)
roi_gray = gray[y:y+h , x:x+w]
roi_color = frame[y:y+h , x:x+w]
xx = int(x+(x+h)/2)
yy = int(y+(y+w)/2)
center = (xx,yy)
cv2.imshow('frame', frame)
if not ret:
print("Can't receive frame (strqeam end?). Exiting ...")
break
if cv2.waitKey(1) == ord('q'):
break
cv2.waitKey()
cap.release()
cv2.destroyAllWindows()
解决方案
推荐阅读
- r - 在 R 中循环读取多个文件时出错
- javascript - chrome 存储同步,在扩展更新时清除?
- c++ - 转换发送到 std::ostream 的文本
- julia - 混合可能性 - 使用 Optim 包
- remote-desktop - 如何将用户专用于单个会话主机服务器
- python - 在python中导入sklearn
- javascript - jquery 添加/删除可排序的 div 和更新计数
- wordpress - Woocommerce 禁用特定产品 ID 的评论
- javascript - 配置 eslint 和 jslint 以不使用保留的 react-native 关键字(如 [import,export])给出错误
- javascript - 一个列表项而不是所有列表项的 ReactJS 悬停/鼠标悬停效果