Я пытаюсь выровнять набор точек, образующих прямоугольник, с калибровочной шахматной доской 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-точки с шахматной доской?
Обновлено: я пытаюсь выровнять фиолетовую рамку на изображении с шахматной доской, немного похожей на зеленую.
Я пытаюсь просто отобразить прямоугольник, выровненный по шахматной доске, проблема здесь в том, чтобы выровнять прямоугольник. Я думаю, что это может не быть проблемой, поскольку пример, на котором я основан, может довольно точно определить положение и размер объекта. Но все равно проверю на всякий случай. Спасибо за совет.






не совсем уверен, что вы делаете, но искажение объектива может быть причиной того, что вычисленные положения отличаются от реального положения