Как найти угол наклона головы относительно камеры?

Пересечение, вероятно, происходит между точками. Давайте рассмотрим следующий пример:

import numpy as np
import matplotlib.pyplot as plt
xs=np.arange(0, 20)
y1=np.arange(0, 20)*2
y2=np.array([1, 1.5, 3,  8,  9,  20, 23, 21, 13, 23, 18, 20, 23, 24, 31, 28, 30, 33, 37, 36])

, начертив два вышеприведенных кривых вместе с их пересечениями, используя в качестве пересечения средние координаты до и после предложенного из idx пересечения, все точки ближе к первому кривая.

idx=np.argwhere(np.diff(np.sign(y1 - y2 )) != 0).reshape(-1) + 0
plt.plot(xs, y1)
plt.plot(xs, y2)
for i in range(len(idx)):
    plt.plot((xs[idx[i]]+xs[idx[i]+1])/2.,(y1[idx[i]]+y1[idx[i]+1])/2., 'ro')
plt.legend(['Y1', 'Y2'])
plt.show()   

, используя в качестве пересечения средние координаты до и после, но для обеих кривых y1 и y2 обычно ближе к истинному пересечению

plt.plot(xs, y1)
plt.plot(xs, y2)
for i in range(len(idx)):
    plt.plot((xs[idx[i]]+xs[idx[i]+1])/2.,(y1[idx[i]]+y1[idx[i]+1]+y2[idx[i]]+y2[idx[i]+1])/4., 'ro')
plt.legend(['Y1', 'Y2'])
plt.show()   

Для еще более точной оценки пересечения мы можем использовать интерполяцию.

0
задан prb 28 January 2019 в 09:42
поделиться

1 ответ

Попробуйте эту ссылку: https://www.learnopencv.com/head-pose-estima-using-opencv-and-dlib/

Короче говоря, вы необходимо знать трехмерные координаты некоторых точек человека и его 2D-проекции на плоскости датчика камеры, а затем использовать алгоритм PnP (Perspective-n-Point) для оценки положения камеры относительно человека. Лучше знать калибровку камеры, но вы можете использовать алгоритм DLT (прямое линейное преобразование), если у вас нет этих данных.

0
ответ дан Sushi 28 January 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: