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