构建face_recognition环境的必备Python库与工具

需积分: 5 0 下载量 35 浏览量 更新于2024-10-13 收藏 270.58MB ZIP 举报
资源摘要信息:"face_recognition环境" face_recognition是Python中一个流行的面部识别库,由Adam Geitgey开发,它可以用来检测和识别图像或视频流中的面部。该库基于dlib的深度学习模型,而dlib是一个广泛使用的机器学习库,专门用于图像处理和机器学习任务。face_recognition库简化了面部识别的使用,使开发者能够轻松地在项目中实现面部检测、识别和处理功能。 为了让face_recognition环境正常工作,通常需要安装以下依赖和组件: 1. Python:face_recognition是用Python编写的,因此需要在系统上安装Python。根据提供的文件列表,这里安装的是与Python 3.7兼容的版本。 2. opencv_contrib_python:OpenCV是一个开源的计算机视觉和机器学习软件库,提供了许多常用的功能,如图像处理、特征检测等。opencv_contrib_python包含了一些额外的非商业性质的贡献模块,这些模块可能包含在face_recognition中使用到的高级功能。这里的版本是*.*.**.**。 3. boost:Boost是一个经过广泛测试的C++库集合,提供了包括多线程、字符串处理、文件系统等在内的各种功能。在Windows平台上编译dlib可能需要Boost库,这里使用的版本为1.79.0。 4. cmake:CMake是一个跨平台的安装(编译)系统,用于控制编译过程,并能够产生标准的构建文件。为了编译dlib等库,需要先运行CMake来配置源代码。这里给出的是3.23.1版本。 5. face_recognition-master:这是face_recognition的源代码仓库,版本为master,即最新的开发版本。 6. dlib-19.7:这是dlib库的版本19.7,包含用于面部识别的深度学习模型和工具。 安装face_recognition环境通常需要以下步骤: - 安装Python环境(如果尚未安装)。 - 使用pip安装opencv_contrib_python。 - 解压并安装boost库。 - 解压并配置cmake,然后使用它来编译dlib。 - 下载并安装face_recognition库。 在Windows系统上,具体步骤可能包括: - 下载对应Python版本的opencv_contrib_python wheel文件,并使用pip安装。 - 下载并解压boost和dlib的压缩包。 - 根据Windows系统配置环境变量,比如Path中添加cmake和Visual Studio的路径。 - 在命令行中运行CMake GUI或者使用命令行工具,设置源代码路径和构建路径,并进行配置和生成。 - 编译和构建dlib,此过程可能需要一段时间。 - 下载face_recognition源代码,通常可以直接使用pip进行安装。 在安装过程中,可能需要考虑其他依赖关系,如Microsoft Visual C++编译器,以及确保所有工具链是最新版本且兼容。 在编写程序时,通常可以通过简单的几行代码实现面部识别功能,例如: ```python import face_recognition # 加载图片并识别面部 image = face_recognition.load_image_file("my_picture.jpg") face_locations = face_recognition.face_locations(image) # 打印结果 for face_location in face_locations: print("面部位于:", face_location) ``` 这段代码展示了如何加载一张图片,并找到其中所有面部的位置。实际应用中,face_recognition库的功能要丰富得多,支持面部特征点检测、面部编码、面部比对等高级功能。 使用face_recognition库时,开发者需要遵守相关的使用条款和隐私政策,确保面部数据的合法合规使用,尤其是在处理个人隐私和数据保护方面需要格外注意。

import face_recognition import cv2 def compareFaces(known_image, name): known_face_encoding = face_recognition.face_encodings(known_image)[0] for i in range(len(face_locations)): # face_Locations的长度就代表有多少张脸 top1, right1, bottom1, left1 = face_locations[i] face_image = unknown_image[top1:bottom1, left1:right1] face_encoding = face_recognition.face_encodings(face_image) if face_encoding: result = {} matches = face_recognition.compare_faces([unknown_face_encodings[i]], known_face_encoding, tolerance=0.39) if True in matches: print('在未知图片中找到了已知面孔') result['face_encoding'] = face_encoding result['is_view'] = True result['location'] = face_locations[i] result['face_id'] = i + 1 result['face_name'] = name results.append(result) if result['is_view']: print('已知面孔匹配照片上的第{}张脸!!'.format(result['face_id'])) unknown_image = face_recognition.load_image_file('qt.jpg') known_image1 = face_recognition.load_image_file('cs.png') known_image2 = face_recognition.load_image_file('cs1.png') results = [] unknown_face_encodings = face_recognition.face_encodings(unknown_image) face_locations = face_recognition.face_locations(unknown_image) compareFaces(known_image1, 'cs') compareFaces(known_image2, 'cs1') view_faces = [i for i in results if i['is_view']] if len(view_faces) > 0: for view_face in view_faces: top, right, bottom, left = view_face['location'] start = (left, top) end = (right, bottom) cv2.rectangle(unknown_image, start, end, (0, 0, 255), thickness=2) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(unknown_image, view_face['face_name'], (left + 6, bottom + 16), font, 1.0, (255, 255, 255), thickness=1) cv2.imshow('windows', unknown_image) cv2.waitKey()

2023-07-11 上传