Я хочу использовать пакеты Python ---- «dlib» для обнаружения человеческих лиц на изображениях, когда я использую «Detector = dlib.get_frontal_face_detector ()» в качестве детектора, ошибки нет, и я могу получить изображение лица,Но когда я использую "detector = dlib.cnn_face_detection_model_v1" в качестве детектора, возникают некоторые ошибки.В обеих ситуациях предиктором является «shape_predictor_68_face_landmarks.dat».
Я использую DEBUG, чтобы найти, какой код вызывает ошибку, и я нахожу, когда запускаю код «shape = предиктор (frame, d)», естьошибка:
Traceback (most recent call last):
File "/home/cxd/pycharm-community-2019.1/helpers/pydev/pydevd.py", line 1741, in <module>
main()
File "/home/cxd/pycharm-community-2019.1/helpers/pydev/pydevd.py", line 1735, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "/home/cxd/pycharm-community-2019.1/helpers/pydev/pydevd.py", line 1135, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/home/cxd/PycharmProjects/ROI/videos.py", line 47, in get_frames_mouth
shape = predictor(frame, d)
TypeError: __call__(): incompatible function arguments. The following argument types are supported:
1. (self: dlib.shape_predictor, image: array, box: dlib.rectangle) -> dlib.full_object_detection
Invoked with: <dlib.shape_predictor object at 0x7f17f3684ce0>, array([[[124, 106, 145],
[124, 106, 145],
[124, 106, 145],
...,
[134, 116, 145],
[134, 116, 145],
[134, 116, 145]],
[[124, 106, 145],
[124, 106, 145],
[124, 106, 145],
...,
[134, 116, 145],
[134, 116, 145],
[134, 116, 145]],
[[124, 106, 145],
[124, 106, 145],
[124, 106, 145],
...,
[134, 115, 147],
[134, 115, 147],
[134, 115, 147]],
...,
[[ 37, 0, 1],
[ 37, 0, 1],
[ 36, 0, 0],
...,
[ 56, 0, 17],
[ 55, 0, 17],
[ 55, 0, 17]],
[[ 37, 0, 0],
[ 36, 0, 0],
[ 36, 0, 0],
...,
[ 55, 0, 16],
[ 54, 0, 16],
[ 54, 0, 16]],
[[ 37, 0, 0],
[ 36, 0, 0],
[ 36, 0, 0],
...,
[ 55, 0, 16],
[ 54, 0, 16],
[ 54, 0, 16]]], dtype=uint8), <dlib.mmod_rectangle object at 0x7f18250c7308>
Process finished with exit code 1
код:
detector = dlib.cnn_face_detection_model_v1("mmod_human_face_detector.dat")
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
dets = detector(frame, 1) #frame is np.array
shape = None
for k, d in enumerate(dets):
shape = predictor(frame, d)
Я думаю, что результаты двух видов детекторов будут одинаковыми, может кто-нибудь помочь мне решить эту проблему?