资源简介

基于LBP算法的人脸识别程序(python),建立相应的文件夹,修改代码路径即可使用,很基础的代码供人脸识别学习。

资源截图

代码片段和文件信息

#coding=utf-8
import cv2
import numpy as np  # 添加模块和矩阵模块
# 图片保存路径
save_face_path = ‘D:/picture/photo_saving/‘
save_gray_path = ‘D:/picture/gray_train_set/‘  # 保存照片的文件夹地址
face_cascade = cv2.CascadeClassifier(“D:/OpenCV/opencv/build/etc/haarcascades/haarcascade_frontalface_default.xml“)
cap = cv2.VideoCapture(0)  # VideoCapture类用于处理摄像头/视频读取_写入操作。
# 0代表0号摄像头
# 打开摄像头,若打开本地视频,同opencv一样,只需将0换成(“×××.avi“)
sampleNum = 0
Id = raw_input(‘enter your id: ‘)
while(1):    # 持续不断的get a frame
    ret frame = cap.read()    # show a frame 第一个参数ret 为True 或者False代表有没有读取到图片第二个参数frame表示截取到一帧的图片
    # 镜像翻转
    frame = cv2.flip(frame 1)
    # 灰度转换,gray就是灰度图片
    gray = cv2.cvtColor(frame cv2.COLOR_BGR2GRAY)  # BGR to gray
    # 对于BGR,blue在高位,green在中位,red在低位,正好与RGB相反
    # 探测图片中的人脸
    faces = face_cascade.detectMultiScale(gray 1.3 5)  # 会得到一串list:size(人脸个数),[xyhw](人脸的位置)
    print(“faces“ faces)  # 输出每个检测到的脸的list

    if not faces is ():  # 如果faces不为空
        for x y z w in faces:  # 同时在faces这个数组中迭代4个参数xyzw。xy是矩阵左上点的坐标,z是矩阵的宽,w是矩阵的高
            roiImg = frame[y:y+w x:x+z]  # ROI,即感兴趣区域,用roiImg设置感兴趣区域的图像
            # Python中ROI区域的设置是使用Numpy中的索引来实现的,参数为y的坐标区间和x的坐标区间,w和z为偏移量,保存在roiImg矩阵中
            # 保存人脸图片
            sampleNum = sampleNum + 1
            cv2.imwrite(save_face_path+‘User.‘+str(Id) + ‘.‘ + str(sampleNum) +‘.jpg‘ roiImg)
            # 保存灰度图片
            roi_gray = cv2.cvtColor(roiImg cv2.COLOR_BGR2GRAY)
            cv2.imwrite(save_gray_path + ‘User.‘+str(Id) + ‘.‘ + str(sampleNum) +‘.jpg‘ roi_gray)
            # 将人脸用矩形框出来
            cv2.rectangle(frame (x y) (x+z y+w) (0 255 0) 2)  # (xy)为起始坐标(x+zy+w)为结束坐标,(02550)是画线对应的rgb颜色,2是画线的宽度

    cv2.imshow(“capture“ frame)  # 以窗口形式显示frame帧 ,窗口名为capture

    if cv2.waitKey(1) & 0xFF == ord(chr(27)):  # 画面延时1ms并和11111111做与运算,若等于关闭键,则break
        break   # waitKey用于设置显示图像的频率,每1ms刷新一次
                # chr(27)为ASCⅡ为27的字符,即ESC,ord函数是将字符转化为ASCⅡ,由于直接输入ESC不是一个字符,因此需要这样转换一下
                # 也可以按q关闭,则写成 if cv2.waitKey(1) & 0xFF == ord(‘q‘): 但这样就对大小写有局限性
#model = cv2.face.LBPHFaceRecognizer_create()
#model=cv2.face.EigenFaceRecognizer_create( )
#model.train(roiImg labels)
#model.save(“MyFacePCAModel.xml“)
cap.release()   # 关闭视频流文件
cv2.destroyAllWindows()  # 释放并销毁窗口
# 识别的时候,不需要再保存图片了,只需要匹配就行

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3308  2019-04-23 09:35  generate.py

     文件       1514  2019-04-23 18:32  recognizer.py

     文件       1085  2019-04-23 19:21  trainner.py

----------- ---------  ---------- -----  ----

                 5907                    3


评论

共有 条评论