资源简介

基于Python和Opencv实现检测人脸,并将人脸保存下来,支持设置保存图片数目

资源截图

代码片段和文件信息


# -*-coding:utf-8 -*-  
__author__ = “ZJL“
 
import cv2
import time
import os
 
 
# 保存截图
save_path = ‘D:\\DeepLearning\\img\\‘
 
# 定义摄像头对象,其参数0表示第一个摄像头
camera = cv2.VideoCapture(0)
 
# 判断视频是否打开
if (camera.isOpened()):
    print(‘Open‘)
else:
    print(‘摄像头未打开‘)
 
# 测试用查看视频size
size = (int(camera.get(cv2.CAP_PROP_frame_WIDTH))
        int(camera.get(cv2.CAP_PROP_frame_HEIGHT)))
print(‘size:‘+repr(size))
 
# 帧率
fps = 5
# 总是取前一帧做为背景(不用考虑环境影响)
pre_frame = None

while(1):
    start = time.time()
    # 读取视频流
    ret frame = camera.read()
    # 转灰度图
    gray_lwpCV = cv2.cvtColor(frame cv2.COLOR_BGR2GRAY)
 
    if not ret:
        break
    end = time.time()
 
    # 显示图像
    cv2.imshow(“capture“ frame)
 
    # 运动检测部分
    seconds = end - start
    if seconds < 1.0 / fps:
        time.sleep(1.0 / fps - seconds)
    gray_lwpCV = cv2.resize(gray_lwpCV (500 500))
    # 用高斯滤波进行模糊处理
    gray_lwpCV = cv2.GaussianBlur(gray_lwpCV (21 21) 0)
 
    # 如果没有背景图像就将当前帧当作背景图片
    if pre_frame is None:
        pre_frame = gray_lwpCV
    else:
        # absdiff把两幅图的差的绝对值输出到另一幅图上面来
        img_delta = cv2.absdiff(pre_frame gray_lwpCV)
        #threshold阈值函数(原图像应该是灰度图对像素值进行分类的阈值当像素值高于(有时是小于)阈值时应该被赋予的新的像素值阈值方法)
        thresh = cv2.threshold(img_delta 25 255 cv2.THRESH_BINARY)[1]
        # 膨胀图像
        thresh = cv2.dilate(thresh None iterations=2)
        # findContours检测物体轮廓(寻找轮廓的图像轮廓的检索模式轮廓的近似办法)
        image contours hierarchy = cv2.findContours(thresh.copy() cv2.RETR_

评论

共有 条评论