Выровняйте набор точек на калибровочной доске в Python

Я пытаюсь совместить набор точек, образующих прямоугольник, с калибровочной шахматной доской opencv 9*6 с 3D-камерой Intel RealSense D435. Я пытаюсь изменить для этого один из примеров Python SDK, в котором уже есть функция преобразования алгоритма Кабша. Примером является то, чтобы добавить ограничивающие рамки для объектов.

Моя проблема в том, что всякий раз, когда я пытаюсь выровнять свои точки (которые рассчитываются с использованием существующего угла шахматной доски в качестве отправной точки и добавления длины, ширины и высоты поля) с использованием этой функции, всегда есть разница в том, где она должно быть.

Мой код для преобразования координат моих точек в основном

point_b = transformation_devices[device].inverse().apply_transformation(np.asarray([[(x + width)],[y], [z]]))
#used to calculate the position of the point and directly transform it, the apply_transformation() function is the built-in transformation function of the example

b_x, b_y = rs.rs2_project_point_to_pixel(intrinsics, b)
#to return to 2D coordinates and display the box using opencv

Видите ли вы какие-либо явно очевидные ошибки, которые я пропустил в своем методе? Есть ли лучший способ выровнять 3D точки на шахматной доске?

Изменить: То, что я пытаюсь добиться, это выровнять фиолетовую рамку на изображении к шахматной доске, немного похожую на зеленую

Образ

0 ответов

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