face_recognition 和黑白图像

我正在使用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)



慕勒3428872
浏览 615回答 1
1回答

慕后森

根据错误消息,它看起来不接受单通道图像。你需要一个 (rows, cols, 3) 的 ndarray。您可以尝试传入image.repeat(3, 2)which 只会重复 L 值三次。face_encodings = face_recognition.face_encodings(image.repeat(3, 2), face_locations)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python