在检测到人脸时捕获屏幕截图

时间:2019-04-09 04:05:45

标签: python opencv

我必须编写一个代码,以便在视频中检测到人脸时对屏幕截图进行截图,以便将图像用于图像识别数据集

我制作了一个可以捕获所有帧的程序,但是我需要使它仅在检测到脸部时捕获

import cv2
cap = cv2.VideoCapture('test.mp4')
count = 0
while cap.isOpened():
    ret,frame = cap.read()
    cv2.imshow('window-name',frame)
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        cv2.imwrite("frame%d.jpg" % count, frame)
        count = count + 1
    if cv2.waitKey(10) & 0xFF == ord('q'):
       break


cap.release()
cv2.destroyAllWindows()  # destroy all the opened windows

1 个答案:

答案 0 :(得分:0)

我刚刚尝试了您的代码,它有1个小错误。您没有正确指定XML分类器路径。我使用XML文件所在的完整路径修复了该路径,并成功运行了该路径。

[Route("api/[controller]")]
[ApiController]
public class MapController : ControllerBase
{
    private MbTilesReader _tileReader;

    public MapController(MbTilesReader tileReader)
    {
        _tileReader = tileReader;

    }

    [HttpGet]
    public IActionResult Get(int x, int y, int z)
    {
        byte[] imageData = _tileReader.GetImageData(x, y, z);
        return File(imageData, "image/png");
    }
}