圖像旋轉 OpenCV實現


經常對一幅圖像進行旋轉操作,OpenCV中提供了很方便易用的仿射變換函數warpAffine, 通過getRotationMatrix2D可以得到放射變換矩陣(矩陣大小2x3)

#include <iostream>
#include <opencv.hpp>

using namespace std;



int main(void){
    cv::Mat src = cv::imread("test.png");
    cv::imshow("src", src);
    double angle = -45;
    cv::Point2f center(src.cols / 2, src.rows / 2);
    cv::Mat rot = cv::getRotationMatrix2D(center, angle, 1);
    cv::Rect bbox = cv::RotatedRect(center, src.size(), angle).boundingRect();

    rot.at<double>(0, 2) += bbox.width / 2.0 - center.x;
    rot.at<double>(1, 2) += bbox.height / 2.0 - center.y;

    cv::Mat dst;
    cv::warpAffine(src, dst, rot, bbox.size());
    cv::imshow("dst", dst);
    cv::waitKey(0);

}

效果

原圖

 

旋轉后的圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM