`
上一期做了静态的人脸识别,这边也学大神做一个动态的,就是人脸追踪。
直接上代码,训练源还是公开的人脸那个,即你得有个分类器,然后就是一个摄像头,之前几期我们已经调试过了,还有就是识别好了我有个avi的录像,方便我做个动图给大家看看效果。
- import cv2
- import numpy as np
- def detect():
- # 创建人脸检测的对象
- face_cascade = cv2.CascadeClassifier("./haarcascade_frontalface_default.xml")
- camera = cv2.VideoCapture(0)
- fourcc = cv2.VideoWriter_fourcc(*'XVID')
- out = cv2.VideoWriter('detect.avi',fourcc,20.0,(640,480))
- while True:
- # 读取当前帧
- ret, frame = camera.read()
- # 转为灰度图像
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- # 检测人脸 返回列表 每个元素都是(x, y, w, h)表示矩形的左上角和宽高
- faces = face_cascade.detectMultiScale(gray, 1.3, 5)
- # 画出人脸的矩形
- for (x, y, w, h) in faces:
- # 画矩形 在frame图片上画, 传入左上角和右下角坐标 矩形颜色 和线条宽度
- img = cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
- # 把脸单独拿出来
- roi_gray = gray[y: y+h, x: x+w]
- cv2.imshow("camera", frame)
- out.write(frame)
- if cv2.waitKey(5) & 0xff == ord("q"):
- break
-
- camera.release()
- cv2.destroyAllWindows()
- if __name__ == '__main__':
- detect()
复制代码
点击运行,程序就会自动把识别期间的视频录制下来,如图,
上一张效果图,实时性还是很好的,如果要识别别的,例如香蕉啊,小狗啊什么的,咱们得自己训练分类器,后续有时间会发帖和大家讨论的
再来一张动图,看下~~~嘿嘿
至此,人脸识别体验基本结束,后续还有更多好玩的,请继续关注哟~~
更多好玩的,可以关注一下~~~
`
|