使用python opencv实现人脸识别
一、opencv是什么?
::opencv 中文意思是(开源计算机视觉)open computer vision 的简写!
是由c++编写的软件库 支持windows mac linux 等系统 在python和java 都有接口支持。
二,代码
1.引入库
代码如下:
import numpy as np
import cv2
2.代码实现
代码如下:
# 以下先介绍 opencv 的一些方法
# VideoCapture() 方法是获取视频数据的 下面的路径只是示例
# 如果方法内 参数为0 则是获取本地摄像头的图像数据
cap = cv2.VideoCapture('./laoliang.mp4')
print(cap)
# read()方法 会返回两个值 第一个是 bool类型 第二个是每一帧的图片数据
flag,frame = cap.read()
print(flag,frame.shape)
# imshow() 方法是查看图片 第一个参数是给图片起一个名字 第二个参数读出来帧图像对象
cv2.imshow('laoliang',frame)
# waitKey() 方法必须有 不然程序会崩溃 参数为0是一直等待按下
cv2.waitKey(0)
# destroyAllWindows() 方法 释放所有的窗口资源
cv2.destroyAllWindows()
#查看每秒多少帧
cap.get(propId = cv2.CAP_PROP_FPS)
人脸数据文件你们不用去github 我使用的放下面:
1.opencv人脸数据资源
2.百度网盘提取
提取码 : l32z
就是cv2.CascadeClassifier(’./haarcascade_frontalface_default.xml’) 方法 里面的文件
完整代码如下:
# VideoCapture(0) 参数里面给0的话就是 调取本地的摄像头
cap = cv2.VideoCapture(0)
# CascadeClassifier() 使用级联分类器进行人脸识别 方法内的文件是我从github 上面下载下来的
#是一份人脸数据文件
detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
# 我使用的是 jupyter notebook 编辑工具
while cap.isOpened():
flag,frame = cap.read()
# cvtColor() 方法是将设置为灰度图
gray = cv2.cvtColor(frame,code=cv2.COLOR_BGR2GRAY)
face_zone = detector.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=5)
print(face_zone)
for x,y,w,h in face_zone:
# 调用方法画圆形框 也可以画矩形(rectangle()方法画矩形) 因为x y是左上角的点
# w 和 h 是宽和高 所以圆的中心点 x+w//2,y+h//2 半径:radius=w//2
cv2.circle(frame,center = (x+w//2,y+h//2),radius=w//2,color=[0,0,255],thickness=2)
# 当flag 为False 时 说明没有图片数据了 就跳出循环
if flag == False:
break
cv2.imshow('liang',frame)
# 当按下的键等于 ’q‘ 时 就跳出循环
if ord('q') == cv2.waitKey(40):
break
cv2.destroyAllWindows()
# 释放资源
cap.release()
效果如下:

总结
本次程序是用jupyter工具实现的 上面写了如何调用本地摄像头 对自己进行人脸识别
如果想将识别的视频保存下来,建议大家去了解一下cv2.VideoWriter() 方法,学到了希望兄弟们点个赞,谢谢大家!
版权声明:本文为ZhuDaoKe原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。