Проект 3d points Ошибка 2d баллов - PullRequest
0 голосов
/ 27 августа 2018

Я пытался спроецировать 3D-точки человеческого скелета на 2d-точки, используя cv2.projectpoints.

Вот мой код:

tmp = np.array(data_3d['root'][i]).reshape(1,3)
revc = np.array([0, -15, -25], np.float)  # rotation vector
tvec = np.array([-2, -2, -12], np.float)  # translation vector
fx = fy = 1.0
cx = cy = 0.0
cameraMatrix = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]])
result = cv2.projectPoints(tmp, revc, tvec, cameraMatrix, None)

Но янайти некоторые странные 2d точки во время проецирования.

root:
     X min_max=(-166.92720209469152, 1243.4813901875507)
       mean=4.290786012592475, variance=4722.3197294835645
     Y min_max=(-402.9192018458054,55.87842522603996)
       mean=0.11309526315136062, variance=499.5386080289831
head:
     X min_max=(-1757.835481879438, 425.7047344280786)
       mean=-4.077206416367477, variance=10165.268433754276
     Y min_max=(-426.06627880880535, 104.67033311809274) 
       mean=0.14534586064178603, variance=600.3554834467959

Поэтому я распечатываю их

root error

и

head error

Как представляется, произошли некоторые странные изменения.

40 => 80 => 190 => 425 => -1757 => -268 => -60 => -33

У меня вопрос, почему эта странная вещь случится?

Сначала я думаю, что это может быть окклюзия, но head победил 'быть неясным.

1 Ответ

0 голосов
/ 27 августа 2018

Вектор вращения rvec в радианах, а не в градусах. Скорее объявите это как:

revc = np.rad2deg(np.array([0, -15, -25], np.float))  # rotation vector

Кроме того, фокусное расстояние fx=fx=1 указано в метрах, и я сомневаюсь, что ваша камера имеет фокусное расстояние 1 мм. Если ваше фокусное расстояние составляет 1 миллиметр, скажите:

fx = fy = .001 # in meters

Если вам нужна дополнительная помощь, нанесите эти точки на изображение и покажите нам изображение. Это также даст вам хорошее представление о том, как выглядит ваша проекция. Это можно сделать с помощью:

from matplotlib import pyplot as plt
plt.scatter(*zip(*result[0][:,0,:]))
plt.show()

Кроме того, что вы имеете в виду со следующим?

Как кажется, произошли странные изменения.

40 => 80 => 190 => 425 => -1757 => -268 => -60 => -33

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...