本章重点内容:
1、python写人脸识别
2、选择OpenCv框架
案例1
导入图片并打开显示
思路:1、导入库 2、加载图片 3、创建窗口 4、显示图片 5、暂停窗口 6、关闭窗口
1 #1、导入库 2 import cv2 3 # 2、加载图片 4 img = cv2.imread("5.png") 5 # 3、创建窗口 6 cv2.namedWindow('windows_cv2') 7 # 4、显示图片 8 cv2.imshow('photo',img) 9 # 5、暂停窗口 10 cv2.waitKey(0) 11 # 6、关闭窗口 12 cv2.destroyAllWindows()
案例2
在识别的图片上面添加人脸识别:重点注意:需要添加模型库
思路:1、导入库 2、加载图片 3、加载人脸模型 4、调整图片灰度 5、检查人脸
6、标记人脸 7、创建窗口 8、显示图片 9、暂停窗口 10、关闭窗口
1 """案例2、图片中人物脸部识别""" 2 #1、导入库 3 import cv2 4 # 2、加载图片 5 img = cv2.imread('1.jpg') 6 # 3、加载人脸模型 7 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 8 # 4、调整图片灰度(人脸识别没必要识别颜色,灰度能提高性能) 9 gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) 10 # 5、检查人脸(scaleFactor=1.15,minNeighbors=5,flags = cv2.CASCADE_SCALE_IMAGE,minSize=(5,5)) 这几项都可以选择默认) 11 faces = face_cascade.detectMultiScale(gray, 12 scaleFactor=1.15, 13 minNeighbors=5, 14 flags = cv2.CASCADE_SCALE_IMAGE, 15 minSize=(5,5)) 16 #6、标记人脸 17 for (x,y,w,h) in faces: 18 #里面有4个参数1、写图片2、坐标原点3、识别大小4、颜色5、线宽 19 cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) 20 21 # 7、创建窗口 22 cv2.namedWindow('windows') 23 # 8、显示图片 24 cv2.imshow('picture',img) 25 # 9、暂停窗口 26 cv2.waitKey(0) 27 # 10、关闭窗口 28 cv2.destroyAllWindows()
案例3
调用摄像头
思路:1、导入库 2、打开摄像头 3、获取摄像头实时画面 4、释放资源 10、关闭窗口
1 """案例3、打开电脑摄像头实时画面""" 2 #1、导入库 3 import cv2 4 # 2、打开摄像头 5 capture = cv2.VideoCapture(0) 6 # 3、获取摄像头实时画面 7 cv2.namedWindow('xiong') 8 while True: 9 #读取摄像头的帧画面 10 ret,frame = capture.read() 11 #显示图片 12 print(ret) 13 cv2.imshow('picture',frame) 14 #暂停窗口 15 if cv2.waitKey(5) & 0xFF == ord('q'): 16 break 17 # 4、释放资源 18 capture.release() 19 # 5、关闭窗口 20 cv2.destroyAllWindows()
案例4
在识别的图片上面添加人脸识别:重点注意:需要添加模型库
思路:1、导入库 2、打开人脸模型 3、打开摄像头 4、创建窗口 5、获取摄像头实时画面 6、释放资源 7、关闭窗口
1 """案例4、打开电脑摄像头实时捕捉人脸""" 2 #1、导入库 3 import cv2 4 # 2、加载人脸模型 5 # faces_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 6 faces_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml') 7 # 3、打开摄像头 8 capture = cv2.VideoCapture(0) 9 # 4、创建窗口 10 cv2.namedWindow('xiong') 11 # 5、获取摄像头实时画面 12 while True: 13 #读取摄像头帧画面 ret打开成功为True ,frame是摄像头画面 14 ret,frame = capture.read() 15 #图片调整灰度 16 gray = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY) 17 #检测人脸 18 faces = faces_cascade.detectMultiScale(gray) 19 #标记人脸 20 for (x,y,w,h) in faces: 21 cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2) 22 #显示图片 23 cv2.imshow('photo',frame) 24 #暂停窗口 25 if cv2.waitKey(5) & 0xFF == ord('q'): 26 break 27 28 # 6、释放资源 29 capture.release() 30 # 7、关闭窗口 31 cv2.destroyAllWindows()