Выровняйте набор точек по калибровочной доске в 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-точки с шахматной доской?

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

Изображение

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

Micka 10.12.2018 09:16

Я пытаюсь просто отобразить прямоугольник, выровненный по шахматной доске, проблема здесь в том, чтобы выровнять прямоугольник. Я думаю, что это может не быть проблемой, поскольку пример, на котором я основан, может довольно точно определить положение и размер объекта. Но все равно проверю на всякий случай. Спасибо за совет.

Ozuhan 10.12.2018 09:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
273
0

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