人脸识别——OpenCV调取摄像头识别人脸

利用OpenCV内置分类器进行人脸识别

#-*-coding:utf-8 -*-
import  cv2

def facedetect(windowname,camera_id):
#命名和打开摄像头,详情见上一篇
    cv2.namedWindow(windowname)

    cap=cv2.VideoCapture(camera_id)#获取摄像头

    classfier=cv2.CascadeClassifier('D:/Python/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')#加载分类器,分类器位置可以自行更改


    color=(0,0,255)#人脸框的颜色,采用rgb模型,这里表示g取255,为绿色框

    while cap.isOpened():
        ok,frame=cap.read()
        if not ok:
            break

        grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#转灰



        faceRects=classfier.detectMultiScale(grey,scaleFactor=1.15,minNeighbors=5,minSize=(5,5))#利用分类器检测灰度图像中的人脸矩阵数,1.15和5分别为图片缩放比例和需要检测的有效点数

        if len(faceRects)>0:#大于0则检测到人脸
            for faceRect in faceRects:#单独框出每一张人脸
                x,y,w,h=faceRect#获取框的左上的坐标,框的长宽

                cv2.rectangle(frame,(x,y),(x+w,y+h),color,3)#用矩形框框出人脸

        cv2.imshow(windowname,frame)#显示图像
        c=cv2.waitKey(1)#每10ms一帧
        if c&0xFF==ord('q'):#退出条件
            break

    cap.release()#释放摄像头并销毁所有窗口
    cv2.destroyAllWindows()


if __name__ == '__main__':#主程序
    print ('face detecting... ')
    facedetect('facedetect', 0)

在原博主的基础上修改了几个参数,供大家参考,测试效果还不错,就用手机里面的一张图片试一下   

 人脸识别——OpenCV调取摄像头识别人脸_第1张图片

亲测效果还不错

 

 

你可能感兴趣的:(人脸识别)