当前位置: 首页 > news >正文

OpenCV CUDA模块图像变形------ 构建仿射变换的映射表函数buildWarpAffineMaps()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

该函数根据给定的仿射变换矩阵 M,生成两个映射表 xmap 和 ymap。这两个映射表描述了目标图像中每个像素在源图像中的对应坐标,可用于后续的图像变形操作(例如图像旋转、平移、缩放等)。

这个函数是 GPU 加速版本,适用于在 CUDA 环境下进行高性能图像变换处理。

函数原型

void cv::cuda::buildWarpAffineMaps 	
(InputArray  	M,bool  	inverse,Size  	dsize,OutputArray  	xmap,OutputArray  	ymap,Stream &  	stream = Stream::Null() 
) 		

参数

参数名类型/说明
M2x3 的 Mat 或 UMat 变换矩阵。
inverse标志位,指定 M 是逆变换(即从目标图像到源图像的映射)。
dsize目标图像的尺寸。
xmapX 坐标的映射值,类型为 CV_32FC1
ymapY 坐标的映射值,类型为 CV_32FC1
stream用于异步操作的 CUDA 流对象,默认为 Stream::Null()

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>  // 包含 buildWarpAffineMaps
#include <opencv2/cudawarping.hpp>  // 包含 remapint main()
{// 读取图像cv::Mat h_src = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/lenna.png", cv::IMREAD_COLOR);if (h_src.empty()) {std::cerr << "无法加载图像!" << std::endl;return -1;}// 上传图像到 GPUcv::cuda::GpuMat d_src, d_dst;d_src.upload(h_src);// 定义仿射变换矩阵:绕中心旋转 45 度 + 缩放 0.5cv::Point2f src_center(h_src.cols / 2.0F, h_src.rows / 2.0F);cv::Mat M = cv::getRotationMatrix2D(src_center, 45, 0.5);  // 2x3 矩阵// 设置输出图像尺寸cv::Size dsize(h_src.cols, h_src.rows);// 创建映射表cv::cuda::GpuMat d_xmap, d_ymap;cv::cuda::buildWarpAffineMaps(M, false, dsize, d_xmap, d_ymap);// 使用 remap 执行图像变换cv::cuda::remap(d_src, d_dst, d_xmap, d_ymap, cv::INTER_LINEAR);// 下载结果cv::Mat h_dst;d_dst.download(h_dst);// 显示结果cv::imshow("Original Image", h_src);cv::imshow("Transformed Image", h_dst);cv::waitKey(0);return 0;
}

运行结果

在这里插入图片描述

相关文章:

  • UE5 学习系类(七)导入bridge资产包
  • Stream流常用方法大全
  • UE5 蓝图按键控制物体旋转、暂停
  • 计算机网络 : 应用层协议HTTP
  • 数据治理域——离线数据开发
  • 迁移科技3D视觉系统:开启袋子拆垛场景的智能革命新纪元
  • CMake指令:aux_source_directory
  • MCP(Model Context Protocol)与 LangChain的区别与联系
  • tryhackme 之反弹 shell 理解
  • 量子加速器切入 AI 底层架构!能源焦虑时代,ORCA 正在改写数据中心的计算逻辑
  • Debian/Ubuntu systemd coredump调试程序Crash
  • 基于ElasticSearch的法律法规检索系统架构实践
  • 基于鸿蒙 HarmonyOS 5 打车小程序案例
  • jupyter中的checkpoints为空/打不开解决办法
  • Vue 事件绑定机制详解
  • 代理模式:AOP 切面编程的底层实现基础
  • 7.路由汇聚及更新
  • 6月11日day51打卡
  • 大三自学笔记:探索Hyperlane框架的心路历程
  • 2025低空经济区的安全与应急控制专题研讨会(SECOLZ 2025)
  • 益阳注册公司/免费网站分析seo报告是坑吗
  • 个人网站备注/中国新闻社
  • 手机设计效果图制作软件/东莞seo收费
  • 哪些网站做推广效果好/互联网产品运营
  • 德州 网站建设/网站关键词上首页
  • 做的网站搜不到/网络广告网站