Повернуть лицо от передней к передней части opencv
В течение недели я боролся с проблемой, заключающейся в том, что я не могу повернуть лицо впереди, как Левое лицо на этом изображении, вперед, как Правое лицо на том же изображении.
1). Я использую учебник по Делоне на веб-сайте learnopencv, чтобы получить весь треугольник левой грани (около 138 треугольников), например:
...
triangle num 4: [100, 383] | [120, 374] | [112, 385]
triangle num 5: [120, 374] | [100, 383] | [92, 345]
triangle num 6: [136, 396] | [137, 379] | [151, 394]
triangle num 7: [137, 379] | [136, 396] | [118, 395]
triangle num 8: [92, 345] | [86, 414] | [80, 451]
triangle num 9: [86, 414] | [92, 345] | [100, 383]
triangle num 10: [86, 414] | [100, 383] | [118, 395]
triangle num 11: [116, 336] | [120, 374] | [92, 345]
triangle num 12: [120, 374] | [116, 336] | [133, 344]
...
2). и эту библиотеку: https://github.com/chili-epfl/attention-tracker (которая может оценить позу головы), чтобы получить матричное преобразование позы левого лица 4x4, эта матрица, кажется, является результатом функции Rodrigues
в opencv.
0.659585 -0.749291 -0.0592507 0.0591621
-0.0327269 -0.107385 0.993679 -0.00523744
-0.750917 -0.653477 -0.0953513 -0.280204
0 0 0 1
Так что я не знаю, что делать дальше, чтобы повернуть весь треугольник с шага 1 с матрицей 4x4 с шага 2, чтобы получить результат с правой гранью. Пожалуйста, помогите!
1 ответ
Как проецировать лицо из нефронтального вида во фронтальный вид - сложная проблема, даже если вы спроецировали положение ориентира лица. Я предлагаю использовать две библиотеки с открытым исходным кодом, которые я использую раньше.
Первый предоставлен MIT. этот код не только фронтализатор лица и может использоваться для любого объекта. https://bitbucket.org/gbhuang/congealreal
Ниже приведена вторая ссылка на библиотеку, которая предназначена только для проекции лица.
https://github.com/eranid/adience_align
Я думаю, что вторая библиотека является наиболее полезной.