Преобразование координат в OpenCV

У меня есть ломаная фигура, представленная в виде массива относительных координат точек x и y (от 0,0 до 1,0).

Я должен нарисовать фигуру со случайным положением, масштабом и углом поворота.

Как я могу сделать это наилучшим образом?


person Felix    schedule 12.05.2014    source источник


Ответы (1)


Вы можете использовать простое преобразование с матрицей RT.

Пусть X = (x y 1)^t будут координатами одной точки вашей фигуры. Пусть R будет 2x2 матрицей вращения, а T будет вектором перемещения 2x1 преобразования, которое вы планируете сделать . Матрица RT A будет иметь вид A = [R T;0 0 1]. Чтобы получить преобразованные координаты точки X, вам нужно сделать это простое вычисление AX = X', где X' — новые координаты. Теперь, чтобы преобразовать всю фигуру, вместо использования одного столбца вы используете матрицу, в которой каждый столбец имеет координату x в первой строке, y во второй и 1 в третьей строке.

Конечно, вы можете попробовать использовать функции, предоставляемые OpenCV, как показано в этот урок, или те, которые предназначены для векторов точек вместо целых изображений, но способ, описанный выше, заставляет вас действительно понять, что вы делаете ;)

person morynicz    schedule 13.05.2014