python_opencv人脸实时目标检测(制作人脸数据集)

原创链接(转载请注明出处):https://blog.csdn.net/qq_44091004/article/details/105787196

开发环境

python+pycharm+opencv3.x

开发过程

人脸目标检测用的是opencv自带的haar级联器,级联器是一个xml文件,保存在opencv安装包下的sources\data\haarcascades文件夹中,复制下你的路径.如:path = ‘‘C://opencv33//opencv//sources//data//haarcascades//haarcascade_frontalface_default.xml’’,看到文件名可知是检测脸部轮廓的。

import cv2 as cv
#级联器文件路径
path = 'C://opencv33//opencv//sources//data//haarcascades//haarcascade_frontalface_default.xml'
#定义一个检测人脸函数,并间隔保存检测到的人脸到指定路径
def generate():
	#创建负责检测人脸的对象
    face_cascade = cv.CascadeClassifier(path)
    #创建一个摄像设备对象,VideoCapture(0),0表示要使用
    #第一个摄像头,默认打开本地摄像头
    camera = cv.VideoCapture(0)
    #fps(Frames Per Second),即每秒显示的帧数,每一帧为一张静态图像
    #fps = camera.get(cv.CAP_PROP_FPS)#获取帧率
    #print(type(fps), fps)#打印帧率类型和帧率
    count = 0
    timeF = 30
    while (True):
       #camera.read()返回两个值,第一个值为布尔值,用来表明是否成功读取帧;第二个值为帧本身。		  
        ret, frame = camera.read()
        #读取到帧过后需要转灰,opencv中人脸检测需要基于灰度的色彩空间
        gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
        #人脸检测函数,检测操作的返回值为人脸矩形数组
        faces = face_cascade.detectMultiScale(gray, 1.3, 5)
        #遍历取出坐标值,然后通过rectangle()函数画出矩形框柱人脸部分   
        for (x,y,w,h) in faces:
            img = cv.rectangle(frame, (x,y), (x+w,y+h), (255,0,0), 2)
			#将人脸部分的灰度图像调整为指定尺寸
            f = cv.resize(gray[y:y+h, x:x+w], (200, 200))
            #间隔保存视频中的图片
            if (count % timeF == 0):
                f = cv.imwrite('E://faceRecognition//%s.jpg' % str(int(count / timeF)), f)
            count += 1

		cv.imshow('camera', frame)
		#如果按Esc,跳出while循环,关闭窗口
        if cv.waitKey(1) == 27:
            break
    #释放资源
    camera.release()
    cv.destroyAllWindows()

if __name__ == '__main__':
    generate()

以上就是人脸实时目标检测(制作人脸数据集)的全部代码,喜欢的点个赞再走吧,后期会更新人脸识别模块。

你可能感兴趣的:(python_opencv人脸实时目标检测(制作人脸数据集))