OpenCV aruco, ось Z не рисует должным образом

У меня проблема с функцией drawAxis в модуле aruco. Перевернутая ось Z и общая не на 90 градусов (X и Y работает нормально).

Проблема иллюстрируется экраном: перевернуть ось

Я попытался сменить камеру, обнаружить другие маркеры и сделать много калибровок (я пробовал разные конфигурации фотографий, между 15 и 100)

Когда я печатал вектор вращения (rvec), я заметил, что угол 0 и 1 (x, y?) Имеют небольшие колебания, но угол 2 (z?) В целом постоянен: rvec print

Где может быть проблема? Если оси X и Y работают нормально, код должен быть правильным? Это нормально, что rvec_2 является константой? Или, может, я виноват в калибровке?

Пожалуйста, за любые подсказки! С уважением!

2 ответа

Решение

Я нашел решение: моя ошибка заключалась в использовании стандартной шахматной доски: плохая калибровочная доска

Я знаю, что во многих уроках эта калибровка работает нормально, но в моем случае - нет

Моей душой была доска charuco (исходный код генератора charuco): https://github.com/opencv/opencv_contrib/blob/master/modules/aruco/samples/calibrate_camera_charuco.cpp

Когда я калибрую камеру с помощью этой платы, все работает нормально

Надеюсь, что это может быть полезно для кого-то, привет

Я понимаю, что это естественно, а не ошибка! На самом деле ось Z всегда указывает на нас и не переворачивается (вы можете проверить сгенерированные оси). То, что произошло, показано на рисунке ниже из-за низкого разрешения или большого расстояния. На самом деле вы видите плоскость XY такой же и думаете, что ось Z в этом сценарии перевернута.

см. это для более подробной информации https://github.com/opencv/opencv/issues/8813

Другие вопросы по тегам