Face_ recognition+openCV人脸检测以及识别,附源码
2019-03-19 21:45
609 查看
Face_ recognition+openCV人脸识别
Face_ recognition的安装配置
Window下通过Anaconda安装
注意python版本一定选择3.6 !!!
点击Create,然后等待一段时间虚拟环境创建完毕,再打开
通过指令 activate face_python进入到刚刚创建的虚拟环境
通过指令conda list看一下pip版本
由于安装Dlib库需要的最低pip版本需要>10
所以该Pip版本过低,先升级一下pip
python -m pip install --upgrade pip
然后pip install dlib安装Dlib库
这里Dlib一定要安装19.7.0以上的版本,不然会有很多麻烦
如果电脑上没有配置好boost和cmake会报错
在这里我就直接把我编译好的Dlib.whl文件上传百度网盘了,自己编译报错的话可以直接下载,下载完可以直接pip install 安装
(百度搜索pip安装whl文件,超简单)
安装好Dlib之后
通过指令:pip install face_recognition 安装face_recognition
接下来安装opencv
直接指令:pip install opencv_python就OK啦
Pycharm配置方法:
打开pycharm
然后new一个Project
配置完成
接下来就来测试一下face_re的几个api
先检测一个图片
import face_recognition import cv2 image = face_recognition.load_image_file('dilireba_1.jpg') face_locations = face_recognition.face_locations(image) cv2.imshow('img',image) cv2.waitKey()
会显示出背景发蓝的照片。
照片中的人脸识别:
通过比较两张照片中的人脸特征来判断是否是同一个人
先读取一张照片作为数据训练,获取encoding
然后在读取一张照片获取encoding与之前的比较来判断
import face_recognition import time picture_of_me = face_recognition.load_image_file('E:\\data\\dataset\\images\\dilireba\\dilireba_1.jpg') my_face_encoding = face_recognition.face_encodings(picture_of_me)[0] start = time.clock() unknown_picture = face_recognition.load_image_file('E:\\data\\dataset\\images\\dilireba\\dilireba_4.jpg') unknown_face_encoding = face_recognition.face_encodings(unknown_picture)[0] results = face_recognition.compare_faces([my_face_encoding], unknown_face_encoding) end = time.clock() print(end - start) if results[0] == True: print("迪丽热巴")
视频中实时人脸识别:
通过openCV获取实时视频,从视频中抽帧获取照片来进行识别,识别以后再通过openCV显示。
import face_recognition import cv2 # This is a demo of running face recognition on live video from your webcam. It's a little more complicated than the # other example, but it includes some basic performance tweaks to make things run a lot faster: # 1. Process each video frame at 1/4 resolution (though still display it at full resolution) # 2. Only detect faces in every other frame of video. # PLEASE NOTE: This example requires OpenCV (the `cv2` library) to be installed only to read from your webcam. # OpenCV is *not* required to use the face_recognition library. It's only required if you want to run this # specific demo. If you have trouble installing it, try any of the other demos that don't require it instead. # Get a reference to webcam #0 (the default one) video_capture = cv2.VideoCapture(0) # Load a sample picture and learn how to recognize it. Zhanyan_image = face_recognition.load_image_file("E:\\data\\dataset\\images\\test\\ZhangYan.jpg") Zhanyan_face_encoding = face_recognition.face_encodings(Zhanyan_image)[0] # Load a second sample picture and learn how to recognize it. tongliya_image = face_recognition.load_image_file("E:\\data\\dataset\\images\\test\\TongLiYa.jpg") tongliya_face_encoding = face_recognition.face_encodings(tongliya_image)[0] uuu_image = face_recognition.load_image_file("E:\\data\\dataset\\images\\test\\WangYu.jpg") uuu_face_encoding = face_recognition.face_encodings(uuu_image)[0] # uuu_image = # Create arrays of known face encodings and their names known_face_encodings = [ Zhanyan_face_encoding, tongliya_face_encoding, uuu_face_encoding ] known_face_names = [ "Zhang Yan", "Tong Liya", "Wang Yu" ] # Initialize some variables face_locations = [] face_encodings = [] face_names = [] process_this_frame = True while True: # Grab a single frame of video ret, frame = video_capture.read() # Resize frame of video to 1/4 size for faster face recognition processing small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25) # Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses) rgb_small_frame = small_frame[:, :, ::-1] # Only process every other frame of video to save time if process_this_frame: # Find all the faces and face encodings in the current frame of video face_locations = face_recognition.face_locations(rgb_small_frame) face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations) face_names = [] for face_encoding in face_encodings: # See if the face is a match for the known face(s) matches = face_recognition.compare_faces(known_face_encodings, face_encoding) name = "Unknown" # If a match was found in known_face_encodings, just use the first one. if True in matches: first_match_index = matches.index(True) name = known_face_names[first_match_index] face_names.append(name) process_this_frame = not process_this_frame # Display the results for (top, right, bottom, left), name in zip(face_locations, face_names): # Scale back up face locations since the frame we detected in was scaled to 1/4 size top *= 4 right *= 4 bottom *= 4 left *= 4 # Draw a box around the face cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 255), 2) # Draw a label with a name below the face # cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 255, 255), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 0, 255), 2) # Display the resulting image cv2.imshow('Video', frame) # Hit 'q' on the keyboard to quit! if cv2.waitKey(1) & 0xFF == ord('q'): break # Release handle to the webcam video_capture.release() cv2.destroyAllWindows()
相关文章推荐
- OpenCV结合V4l2实现人脸检测以及人脸识别
- 基于OpenCV的EigenFace FisherFace LBPHFace人脸识别的实现
- 一个OpenCV实现的人脸检测的源码
- 接深度学习,opencv人脸识别,目标检测等项目
- C# OpenCV4 -EigenFaceRecognizer识别人脸2
- openCV第二课学习:开启人脸识别的拿来主义-人脸检测
- face++人脸识别源码
- 人脸识别系统开发(8) -- OpenCV人脸检测
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- C++ Opencv人脸检测+分类器训练+识别 程序制作
- OpenCV人脸检测(完整源码+思路)
- 利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)
- 人脸识别在opencv下作人脸检测
- 采用face_recognition进行人脸识别时,解决摄像头太远人脸太小导致无法检测的问题
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物
- 使用OpenCV+PCA+KNN/SVM进行人脸检测和识别-Python
- Android配置opencv开发环境并运行face-detection 人脸检测例程
- Opencv与dlib联合进行人脸关键点检测与识别【转】
- 人脸识别(三)——源码放送。opencv人脸识别