Code Yarns ‍👨‍💻
Tech BlogPersonal Blog

How to rotate point in OpenCV

📅 2015-Jun-16 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ opencv, point, rotate ⬩ 📚 Archive

It is common to use the cv::Point types for points in C++ code that uses OpenCV. Rotating such a point around origin or rotating it around another center point is straightforward. Remember that positive angle is counter-clockwise.

cv::Point2f RotatePoint(const cv::Point2f& p, float rad)
{
    const float x = std::cos(rad) * p.x - std::sin(rad) * p.y;
    const float y = std::sin(rad) * p.x + std::cos(rad) * p.y;

    const cv::Point2f rot_p(x, y);
    return rot_p;
}

cv::Point2f RotatePoint(const cv::Point2f& cen_pt, const cv::Point2f& p, float rad)
{
    const cv::Point2f trans_pt = p - cen_pt;
    const cv::Point2f rot_pt   = RotatePoint(trans_pt, rad);
    const cv::Point2f fin_pt   = rot_pt + cen_pt;

    return fin_pt;
}

Tried with: OpenCV 2.4.9 and Ubuntu 14.04