使用opencv+python实现最简单摄像头实时人脸识别(适合入门)

主要参考:
https://www.cnblogs.com/lzhyzbb/p/11368962.html
https://www.cnblogs.com/neo-T/p/6426029.html

(如果你和我一样也是初(cai)学(niao)的,如果你也使用虚拟机Ubuntu环境学习opencv,那么我首先强烈建议你先检查一下你的虚拟机有没有识别到你的摄像头设备,我不会告诉你我因为摄像头找不到内容卡了好久最后才发现是设置问题…………
虚拟机Ubuntu打开摄像头失败及OpenCV打开摄像头超时的问题参考:https://blog.csdn.net/qq_30155503/article/details/79460420

#使用opencv+python实现最简单摄像头实时人脸识别(适合入门)
import cv2
cap = cv2.VideoCapture(0)
face = cv2.CascadeClassifier('/home/lucia/opencv/data/haarcascades/haarcascade_frontalface_default.xml')
while(1):
    ret,frame = cap.read()
    gray = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)
    faces = face.detectMultiScale(gray,1.1,3,0,(200,200))
    for (x,y,w,h) in faces:
        img = cv2.rectangle(frame,(x,y),(x+w,y+h),(255,255,0),2)
        gray_roi = gray[y:y+h,x:x+h]
        cv2.imwrite('face.jpg',gray_roi)
        print('Image saved!!')
    cv2.imshow('摄像头',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

注意这里的haarcascade_frontalface_default.xml是从https://github.com/opencv/opencv/tree/master/data/haarcascades下载的

我这个小例子仅适合入门使用,在此基础上还可以进行多人脸识别保存(就是把提取到的人脸用cv2.imwrite(’%d.jpg’%(human_num),gray_roi)保存起来);还可以将它进一步运用到人脸属性识别上:直接将提取到的人脸(本代码中是gray_roi,类型为unit8,注意图片格式转换)输入进训练好的网络模型中进行测试等

你可能感兴趣的:(使用opencv+python实现最简单摄像头实时人脸识别(适合入门))