我正在使用face_recognition 库来识别图像上的人。根据库文档,它支持两种用于进一步处理的输入图像格式:RGB(8 位,3 通道)和 L(黑白)。我试着用face_recognition.api.load_image_file(file, mode='RGB')没关系。但我需要使用 L 模式,这就是重点。问题是 mode='RGB' 生成 numpy.array (x,y,3) 和 mode='L' 生成 numpy.array(x,y)。数组应该稍后输入到 face_recognition.face_locations 和 face_recognition.face_encodings 函数。如果我们将在 L 模式中生成的数组放入 face_encodings,我们会得到以下错误: TypeError: compute_face_descriptor(): incompatible function arguments. The following argument types are supported: 1. (self: dlib.face_recognition_model_v1, img: numpy.ndarray[(rows,cols,3),uint8], face: dlib.full_object_detection, num_jitters: int=0) -> dlib.vector 2. (self: dlib.face_recognition_model_v1, img: numpy.ndarray[(rows,cols,3),uint8], faces: dlib.full_object_detections, num_jitters: int=0) -> dlib.vectors 3. (self: dlib.face_recognition_model_v1, batch_img: List[numpy.ndarray[(rows,cols,3),uint8]], batch_faces: List[dlib.full_object_detections], num_jitters: int=0) -> dlib.vectorss任何想法,我应该如何将这个库用于黑白图像以获得 128 维人脸图?引发错误的完整列表(您可以使用任何人的图像作为 image.jpg): import face_recognition image = face_recognition.load_image_file('image.jpg', mode='L') face_locations = face_recognition.face_locations(image) face_encodings = face_recognition.face_encodings(image, face_locations)
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
根据错误消息,它看起来不接受单通道图像。你需要一个 (rows, cols, 3) 的 ndarray。您可以尝试传入image.repeat(3, 2)
which 只会重复 L 值三次。
face_encodings = face_recognition.face_encodings(image.repeat(3, 2), face_locations)
添加回答
举报
0/150
提交
取消