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;
}
相关推荐
后端小肥肠2 分钟前
小红书虚拟商品怎么做?我先用 Skill 跑通了壁纸品类
人工智能·aigc·agent
feiyu_gao3 分钟前
从零搭建个人 AI 工作台:一个管理者的 3 个月实验
人工智能·aigc·团队管理
程序员cxuan1 小时前
一句话,让你用上 GPT-5.6
人工智能·后端·程序员
机器之心1 小时前
AI圈刚开始谈Loop Engineering,两位95后博士已经盯上了人类闭环数据
人工智能·openai
澄旭1 小时前
一文讲清 MCP:AI 应用连接外部世界的标准协议
人工智能
机器之心1 小时前
不只DeepSeek,阶跃等开源JetSpec:大模型解码提速近10倍
人工智能·openai
moMo2 小时前
当LLM学会"递纸条",AI是如何调用工具的
人工智能
拾年2752 小时前
大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿
人工智能·深度学习·机器学习
拾年2752 小时前
从 Prompt 到 Context 再到 Harness:AI 工程化的三年三级跳
人工智能