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;
}
相关推荐
IvanCodes2 小时前
RAG 实战教程(一):RAG 工作原理与完整流程——分片、索引、召回、重排和生成
人工智能·后端·agent
今天AI了吗2 小时前
合规场景下的 AI 推理可解释性:Attention 可视化与推理路径追踪的工程实践
人工智能
周末程序猿3 小时前
浅析大模型推理十二篇之KV Cache
人工智能
鱼樱前端3 小时前
用 AI 做内容变收入
前端·人工智能·ai编程
Dawson Zhu3 小时前
基于Palantir Foundry构建半导体制造AI友好型数据中台:从良率分析场景谈起
人工智能·语言模型·架构·制造·agi
fthux4 小时前
装闭 RenoPit 源码解析(04):装修图纸和合同文件上传处理流程
人工智能·ai·开源·github·open source·renopit
weixin_446260855 小时前
从被动镜像到主动智能体:面向网络物理人工智能的整体论数字孪生(HDT-Net)
网络·人工智能
秋枫要学习5 小时前
你的鼠标,正在被 AI 抢走
人工智能·计算机外设
满怀冰雪6 小时前
19-图像数据处理:PaddleVision Transform 实战
人工智能·深度学习·计算机视觉·paddle