用Python进行人脸识别「包括源代码」

日期:2023-03-02 18:15:27 / 人气:226

人脸辨认是从照片和视频帧中辨认或验证一团体的脸的进程。人脸检测是指在图像中定位和提取人脸(地位和大小)以供人脸检测算法运用的进程。人脸辨认办法用于定位图像中独一指定的特征。在大少数状况下,面部图片曾经被移除、裁剪、缩放和转换爲灰度。人脸辨认包括三个步骤:人脸检测、特征提取、人脸辨认。OpenCV是一个用C++编写的开源库.它包括了用于计算机视觉义务的各种算法和深度神经网络的完成。1.预备数据集创立2个目录,训练和测试。从互联网上爲每个演员选择一个图片,并下载到我们的“火车”目录中。确保您所选择的图像可以很棒地显示人脸的特征,以便对分类器停止分类。爲了测试模型,让我们拍摄一张包括一切强迫转换的图片,并将其放到我们的“test”目录中。爲了您的舒适,我们添加了培训和测试数据与项目代码。2.模型的训练首先导入必要的模块。import face_recognition as frimport cv2import numpy as npimport os人脸辨认库包括协助人脸辨认进程的各种适用顺序的完成。如今,创立2个列表来存储图像(人员)的称号及其各自的脸编码。path = "./train/"known_names = []known_name_encodings = []images = os.listdir(path)人脸编码是一种值的矢量,它代表着脸部特征之间的重要度量,如眼睛之间的间隔、额头的宽度等。我们循环遍历火车目录中的每个图像,提取图像中的人的姓名,计算其脸编码向量,并将信息存储在相应的列表中。for _ in images:image = fr.load_image_file(path + _)image_path = path + _encoding = fr.face_encodings(image)[0]known_name_encodings.append(encoding)known_names.append(os.path.splitext(os.path.basename(image_path))[0].capitalize())3.在测试数据集中测试模型如前所述,我们的测试数据集只包括一个包括一切人员的图像。运用CV2 imread()办法读取测试映像。test_image = "./test/test.jpg"image = cv2.imread(test_image)人脸辨认库提供了一种名爲Face_Locations()的有用办法,它定位图像中检测到的每团体脸的坐标(左、下、右、上)。运用这些地位值,我们可以很容易地找到脸编码。face_locations = fr.face_locations(image)face_encodings = fr.face_encodings(image, face_locations)我们循环遍历每个面部地位及其在图像中的编码。然后,我们将这种编码与“列车”数据集中的人脸编码停止比拟。然后计算人脸间隔,即计算测试图像编码和训练图像编码之间的类似性。如今,我们从它选取最小值间隔,表示测试图像的这张脸是训练数据集中的人之一。如今,运用CV2模块中的办法绘制一个带有面部地位坐标的矩形。for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):   matches = fr.compare_faces(known_name_encodings, face_encoding)   name = ""   face_distances = fr.face_distance(known_name_encodings, face_encoding)   best_match = np.argmin(face_distances)   if matches[best_match]:       name = known_names[best_match]   cv2.rectangle(image, (left, top), (right, bottom), (0, 0, 255), 2)   cv2.rectangle(image, (left, bottom - 15), (right, bottom), (0, 0, 255), cv2.FILLED)

作者:天火娱乐




现在致电 5243865 OR 查看更多联系方式 →

COPYRIGHT 天火娱乐 版权所有