영상을 반시계 방향으로 θ만큼 회전하는 어파인 변환 행렬 M은 다음과 같이 정의됩니다.
그러므로 cos() 함수와 sin() 함수를 이용하여 앞과 같은 행렬을 생성하고, warpAffine() 함수를 사용하면 영상을 회전시킬 수 있습니다. 다만 영상을 회전하는 경우가 실제로 많이 발생하기 때문에 OpenCV는 영상의 회전을 위한 어파인 변환 행렬을 생성하는 getRotationMatrix2D() 함수를 제공합니다. 이 함수를 이용하면 영상을 원점이 아닌 특정 좌표를 기준으로 회전시키거나 필요한 경우 크기 변환까지 함께 수행하는 어파인 변환 행렬을 쉽게 만들 수 있습니다. getRotationMatrix2D() 함수 원형은 다음과 같습니다.
Mat getRotationMatrix2D(Point2f center, double angle, double scale); |
|
• center |
회전 중심 좌표 |
• angle |
회전 각도. 양수는 반시계 방향, 음수는 시계 방향을 의미합니다. |
• scale |
회전 후 추가적으로 확대 또는 축소할 비율. 크기 변환은 수행하지 않으려면 1을 지정합니다. |
• 반환값 |
2×3 어파인 변환 행렬(CV_64F) |
getRotationMatrix2D() 함수는 영상을 center 점을 기준으로 반시계 방향으로 angle 각도만큼 회전한 후, scale 크기만큼 확대 또는 축소하는 2×3 어파인 변환 행렬을 반환합니다. 만약 영상을 시계 방향으로 회전하는 어파인 변환 행렬을 구하고 싶다면 angle 인자에 음수를 지정합니다. getRotationMatrix2D() 함수가 반환하는 어파인 변환 행렬은 다음과 같이 계산됩니다.