cv::GetPerspectiveTransform和cv::warpPerspective

cv::GetPerspectiveTransform获取透视变换矩阵

  • 用于获取透视变换矩阵。它需要源图像中四个点的坐标和这些点在输出图像中的位置坐标
C++ 复制代码
cv::Mat cv::getPerspectiveTransform(const cv::Point2f* src, const cv::Point2f* dst)
  • 参数:

    • src:源图像中四个点的坐标数组。

    • dst:这四个点在输出图像中的位置坐标数组。

  • 返回值:

    • 返回一个3x3的透视变换矩阵。

cv::warpPerspective

C++ 复制代码
	void cv::warpPerspective(
		cv::InputArray src, // 输入图像
		cv::OutputArray dst, // 输出图像
		cv::InputArray M, // 3x3 变换矩阵
		cv::Size dsize, // 目标图像大小
		int flags = cv::INTER_LINEAR, // 插值方法
		int borderMode = cv::BORDER_CONSTANT, // 外推方法
		const cv::Scalar& borderValue = cv::Scalar() //常量边界时使用
	);

例程

C++ 复制代码
#include <opencv2/opencv.hpp>
 
int main()
{
    cv::Point2f srcTriangle[4];
    cv::Point2f dstTriangle[4];
 
    // 设置源图像中的四个点坐标
    srcTriangle[0] = cv::Point2f(0, 0);
    srcTriangle[1] = cv::Point2f(src.cols - 1, 0);
    srcTriangle[2] = cv::Point2f(0, src.rows - 1);
    srcTriangle[3] = cv::Point2f(src.cols - 1, src.rows - 1);
 
    // 设置输出图像中的四个点坐标
    dstTriangle[0] = cv::Point2f(0, 0);
    dstTriangle[1] = cv::Point2f(dst.cols - 1, 0);
    dstTriangle[2] = cv::Point2f(0, dst.rows - 1);
    dstTriangle[3] = cv::Point2f(dst.cols - 1, dst.rows - 1);
 
    // 获取透视变换矩阵
    cv::Mat perspectiveTransform = cv::getPerspectiveTransform(srcTriangle, dstTriangle);
 
    // 应用透视变换
    cv::warpPerspective(src, dst, perspectiveTransform, dst.size());
 
    return 0;
}
相关推荐
IT_陈寒3 分钟前
7个鲜为人知的JavaScript性能优化技巧,让你的网页加载速度提升50%
前端·人工智能·后端
城数派9 分钟前
1951-2100年全球复合极端气候事件数据集
人工智能·数据分析
Hody9128 分钟前
【XR硬件系列】夸克 AI 眼镜预售背后:阿里用 “硬件尖刀 + 生态护城河“ 重构智能穿戴逻辑
人工智能·重构
Icoolkj31 分钟前
RAGFlow与Dify知识库:对比选型与技术落地解析
人工智能
终端域名35 分钟前
转折·融合·重构——2025十大新兴技术驱动系统变革与全球挑战应对
人工智能·重构
FreeCode37 分钟前
LangChain1.0智能体开发:中间件(Middleware)
人工智能·langchain·agent
黑黑的脸蛋37 分钟前
Cursor 自动化批量修改大量代码场景
人工智能·程序员
智启七月1 小时前
从 token 到向量:微信 CALM 模型颠覆大语言模型范式
人工智能·深度学习
老纪的技术唠嗑局1 小时前
AI 时代的数据库进化论 —— 从向量到混合检索
人工智能
Better Bench1 小时前
【大模型RAG安全基准】安装和使用SafaRAG框架
网络·人工智能·安全·大模型·组件·rag