PYTHON人脸识别模块

class FaceRekognition:人脸识别类

初始化函数:init(self, landmarks_model: Union[str, Path])

参数类型:对象自身self,表征模型路径的字符串landmarks_model

获取脸部位置检测器:self.detector = dlib.get_frontal_face_detector()
初始化人脸关键点预测器,参数为表征模型路径的字符串landmarks_model:self.predictor = dlib.shape_predictor(landmarks_model)

检测函数:predict(self, image: Union[str, Path, bytes, numpy.ndarray])

参数类型:对象自身self,表征被检测图像的字符串image

检测是否已经存在待检测图像:if not isinstance(image, numpy.ndarray)
读取待检测图像:image = read_image(image)
将图像转为灰度图:gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
调整色彩空间以便opencv处理:bgr_image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
初始化存储人脸检测结果的列表:result = []
检测图像中的人脸:faces = self.detector(gray_image)
遍历所有人脸:for face in faces
检测人脸关键点以确定人脸位置及大小:face_chip = dlib.get_face_chip(bgr_image, self.predictor(gray_image, face))
在列表result末尾添加需要添加的位置数据:result.append({‘BoundingBox’: {‘Left’: face.left(),‘Top’: face.top(),‘Width’: face.right() - face.left(),‘Height’: face.bottom() - face.top()}
将人脸区块的色彩空间改回RGB:‘FaceImage’: cv2.cvtColor(face_chip, cv2.COLOR_BGR2RGB)
返回人脸列表,result中包含人脸坐标及人脸图像切片:return result

main函数调用

if name == ‘main’: 是 Python 中一个常见的惯用法,用于判断当前模块是否是被直接执行的。

当一个 Python 文件被直接运行时,其 name 属性的值为 ‘main’,表示该模块是主程序入口。而当该模块被其他模块导入时,name 的值则是该模块的名称。
当我们使用 if name == ‘main’: 这样的语句时,我们可以把一些代码块放在这个条件下,这些代码块只有在当前模块作为主程序运行时才会执行,而当这个模块被其他模块导入时则不会执行。这样做的好处是可以让模块既可以作为独立的脚本运行,也可以作为其他模块的组件导入使用。
创建人脸识别类下的一个对象:face_rekognition = FaceRekognition(‘models/shape_predictor_68_face_landmarks.dat’)
对指定图像进行人脸识别并返回识别结果:face_result = face_rekognition.predict(‘images/test.jpg’)
输出识别结果:print(face_result)

  • 39
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值