opencv C++透视变换
2024-01-03 16:57:45
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 1. 读取图像
cv::Mat image = cv::imread("C:/Users/10623/Pictures/adf4d0d56444414cbeb809f0933b9214.png");
if (image.empty()) {
std::cerr << "无法读取图像!" << std::endl;
return -1;
}
// 2. 定义源点(4个点,定义一个四边形区域)
cv::Point2f srcPoints[4];
srcPoints[0] = cv::Point2f(0, 0); // 左上角
srcPoints[1] = cv::Point2f(image.cols - 1, 0); // 右下角
srcPoints[2] = cv::Point2f(image.cols - 1, image.rows - 1); // 左下角
srcPoints[3] = cv::Point2f(0, image.rows - 1); // 右上角
// 3. 定义目标点(通常与源点相同,但可以更改以进行变换)
cv::Point2f dstPoints[4];
dstPoints[0] = cv::Point2f(image.cols / 2, 0); // 左上角
dstPoints[1] = cv::Point2f(image.cols / 2, image.rows - 1); // 右下角
dstPoints[2] = cv::Point2f(0, image.rows - 1); // 左下角
dstPoints[3] = cv::Point2f(0, 0); // 右上角
// 4. 计算透视变换矩阵(cv::getPerspectiveTransform 和 cv::invertPerspectiveTransform)
cv::Mat transformMatrix = cv::getPerspectiveTransform(srcPoints, dstPoints);
//cv::Mat inverseTransformMatrix = cv::invertPerspectiveTransform(transformMatrix);
// 5. 应用透视变换(cv::warpPerspective)
cv::Mat warpedImage;
cv::warpPerspective(image,warpedImage, transformMatrix, image.size());
// 6. 显示结果图像
cv::imshow("Original Image", image);
cv::imshow("Perspective Warped Image", warpedImage);
cv::waitKey(0);
return 0;
}
文章来源:https://blog.csdn.net/weixin_38241876/article/details/135366263
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!