opencv-warpPerspective密集型透視變換


5.png

 

 

#include<opencv2/opencv.hpp>
#include<iostream>
#include  <vector>


int main(int argc, char** argv) {

    cv::Mat src = cv::imread("D:/bb/tu/5.png");
    
    std::vector<cv::Point2f> src_coners(4);//原圖4個點
    src_coners[0] = cv::Point2f(27, 185);
    src_coners[1] = cv::Point2f(346, 56);
    src_coners[2] = cv::Point2f(216, 512);
    src_coners[3] = cv::Point2f(488, 457);
    cv::circle(src, cv::Point2f(27, 185), 3, cv::Scalar(0, 0, 255), 2); //畫圓--標注4個點
    cv::circle(src, cv::Point2f(346, 56), 3, cv::Scalar(0, 0, 255), 2);
    cv::circle(src, cv::Point2f(216, 512), 3, cv::Scalar(0, 0, 255), 2);
    cv::circle(src, cv::Point2f(488, 457), 3, cv::Scalar(0, 0, 255), 2);

    std::vector<cv::Point2f> dst_coners(4);//新圖4個點
    dst_coners[0] = cv::Point2f(10, 10);
    dst_coners[1] = cv::Point2f(500, 10);
    dst_coners[2] = cv::Point2f(10, 500);
    dst_coners[3] = cv::Point2f(500, 500);

    cv::Mat warpMatrix = getPerspectiveTransform(src_coners, dst_coners);//計算變換矩陣

    cv::Mat dst(src.rows,src.cols, CV_8UC3);
    warpPerspective(src, dst, warpMatrix, dst.size(), cv::INTER_LINEAR, cv::BORDER_CONSTANT);//密集型透視變換
    //參數1:變換前圖像
    //參數2:變換后圖像
    //參數3:變換矩陣
    //參數4:輸出圖像大小
    //參數5:參數int flags=INTER_LINEAR:設置插值方式,默認方式為線性插值


    cv::namedWindow("原圖");
    cv::imshow("原圖", src);
    cv::imshow("新圖", dst);

    cv::waitKey(0);
    return 0;
}

 

 

 

 


免責聲明!

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



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