人脸识别

这篇博客介绍了OpenCV中三种人脸识别方法:Eigenfaces, Fisherface和LBPH。Eigenfaces依赖PCA,Fisherface是其进化版,而LBPH允许形状和大小差异。文章详细解释了每个方法的原理,并提供了识别过程中参数的设置指导。" 99461551,8687415,JSTL中<c:foreach>标签详解与应用,"['JSTL', '前端开发', 'Web开发']
摘要由CSDN通过智能技术生成

一、生成人脸识别数据

这里需要一些包含不同表情的图像,但是,必须确保样本图像满足如下条件:

  • 图像是灰度格式,后缀名为.pgm
  • 图像形状为正方形
  • 图像大小要一样(eg. 200*200)
import cv2 as cv
import os

VIDEO_PATH = 'D:/Temp/python_project/test_data/video'
PGM_PATH = "D:/Temp/python_project/opencv/pgm"

def generate():
    count = 0
    # Here is getting sample images from 4 videos. You can also get sample images 
    # from camera directly by using cv.VideoCapture(0) .
    for videoName in ['nod.mp4', 'shaking_head.mp4', 'blink.mp4', 'smile.mp4']:
        print(videoName)
        camera = cv.VideoCapture(os.path.join(VIDEO_PATH, videoName))
        while (True):
            ret, frame = camera.read()
            frame = cv.flip(frame, 1)
            if frame is None:
                break
            else:
                rows, cols, channels = frame.shape
                M = cv.getRotationMatrix2D(((cols - 1) / 2.0, (rows - 1) / 2), 270, 1)
                img = cv.warpAffine(frame, M, (cols, rows))

                face_cascade = cv.CascadeClassifier('D:/Temp/python_project/opencv/cascades/haarcascade_frontalface_default.xml')
                gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
                faces = face_cascade.detectMultiScale(gray, 1.3, 5, minSize=(450, 450))
                for (x,y,w,h) in faces:
                    img = cv.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
                    f = cv.resize(gray[y:y+h, x:x+w], (200,200))
                    cv.imwrite(os.path.join(PGM_PATH, '%s.pgm') % str(count), f)
                    count += 1

                cv.namedWindow('Face detected')
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值