OpenCV - Как определить и измерить угол между двумя кадрами? - PullRequest
5 голосов
/ 03 мая 2011

Я пытаюсь понять и использовать OpenCV.Я хотел знать, возможно ли найти и измерить угол между двумя кадрами.

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

double getRotation(Image img1, Image img2) {
  //Compare the frames

  //Return the value
}

, а затем я поворачиваюсь на этот угол.

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

Если вы можете обнаружить статические объекты, например фон, в кадрах, то вы можете найти точки с именем good_features_to_track (cvGoodFeaturesToTrack) на фоне и отслеживать эти точки с помощью optical_flow (cvCalcOpticalFlowPyrLK).

Если вращение происходит только на равнине «ху», вы можете обнаружить вращение с помощью cvGetAffineTransform.

Поскольку допускается только вращение (без перемещения и масштабирования), нетрудно определить угол поворота с помощью матрицы преобразования, полученной с помощью cvGetAffineTransform.Эта матрица выглядит следующим образом (см. Википедия ):

enter image description here

Где \ theta - угол поворота

0 голосов
/ 03 мая 2011

Ну, это может быть очень сложно, просто более простое решение - найти грубые линии кадров. Конечно, вам необходимо определить, где находятся лучшие и стабильные линии, которые вы можете отслеживать между двумя кадрами, как только это станет доступно, вы сможете найти угол между двумя кадрами. То, что Андрей предложил для нахождения углов, тоже пригодится.

...