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

OpenCV CUDA模块图像变形------对图像进行GPU加速的仿射变换函数warpAffine()

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

算法描述

该函数用于对图像进行 GPU 加速的仿射变换(Affine Transformation),是 cv::warpAffine 的 CUDA 版本。支持平移、旋转、缩放、翻转等常见几何变换操作。

函数原型

void cv::cuda::warpAffine 	
(InputArray  	src,OutputArray  	dst,InputArray  	M,Size  	dsize,int  	flags = INTER_LINEAR,int  	borderMode = BORDER_CONSTANT,Scalar  	borderValue = Scalar(),Stream &  	stream = Stream::Null() 
) 		

参数

参数名说明
src源图像。支持像素深度为 CV_8UCV_16UCV_32SCV_32F 的图像,通道数为 1、3 或 4。
dst目标图像,类型与 src 相同,尺寸为 dsize
M2x3 的仿射变换矩阵(Mat 或 UMat 类型)。
dsize目标图像的尺寸(宽 x 高)。
flags插值方法组合(参考 resize 函数),以及可选标志 WARP_INVERSE_MAP,表示 M 是一个逆变换(即从目标图像到源图像的映射)。仅支持 INTER_NEARESTINTER_LINEARINTER_CUBIC 插值方法。
borderMode像素外推方法(边界填充方式)。
borderValue边界填充值,默认为黑色(0)。
stream用于异步版本的 CUDA 流对象。

代码示例

#include <opencv2/cudawarping.hpp>
#include <opencv2/opencv.hpp>int 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 );// 构造仿射变换矩阵:绕中心旋转 30 度cv::Point2f center( h_src.cols / 2.0F, h_src.rows / 2.0F );cv::Mat M = cv::getRotationMatrix2D( center, 30, 1.0 );// 设置输出尺寸cv::Size dsize( h_src.cols, h_src.rows );// 执行仿射变换cv::cuda::warpAffine( d_src, d_dst, M, dsize, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar() );// 下载并显示结果cv::Mat h_dst;d_dst.download( h_dst );cv::imshow( "Original Image", h_src );cv::imshow( "Warped Image", h_dst );cv::waitKey( 0 );return 0;
}

在这里插入图片描述

http://www.xdnf.cn/news/13900.html

相关文章:

  • Spring Cloud Gateway + JWT 单点登录实现方案(无独立的认证服务器)
  • doris manager 安装部署 、管理已有doris集群、使用studio进行SQL查询
  • croc-文件传输工具
  • Rust 学习笔记:Stream
  • 机器学习算法_聚类KMeans算法
  • 中小企业服务器低成本的防勒索工具:RDM防勒索
  • Python实现下载监控工具:自动检测并移动下载文件
  • 金融领域LLM开源测试集
  • C. Cherry Bomb
  • SpringBoot 服务器监控 监控系统开销 获取服务器系统的信息用户信息 运行信息 保持稳定
  • Rethinking Coarse-to-Fine Approach in Single Image Deblurring论文阅读
  • 产品哲学:用户收益>操作成本,字节跳动成功的底层逻辑
  • 泰国数码电商系统定制|3C产品详情泰语化+售后管理,适配泰国数码零售
  • 【QT】QTableView自定义样式:仅显示行间隔、隐藏列间隔、表头样式、表格样式、单行选中等
  • python+django/flask成都奥科厨具厂产品在线销售系统
  • Vue中v-if条件渲染的常见陷阱:以金额显示为例
  • Android音视频多媒体开源框架基础大全
  • 基于OpenCV实现实时颜色检测
  • 嵌入式相关开源项目、库、资料------持续更新中
  • Linux 系统性能测试全指南:从磁盘 I/O 到网络带宽的实战方案
  • ArcGIS Pro 3.4 二次开发 - 工作流
  • 【60 Pandas+Pyecharts | 箱包订单数据分析可视化】
  • 数据结构——第二章 线性表之顺序表、单链表
  • NB-IoT-下行基本概率和时频资源分布
  • 城市排水管网液位流量监测系统解决方案
  • 1.14 express小项目 和 用到的 jwt详解
  • 【STM32的通用定时器CR1的CKD[1:0]: 时钟分频因子 (Clock division)】
  • 【PDF】常见纸张字体大小设置指南 / Common Paper Size Font Guidelines
  • 音视频之H.264的句法和语义
  • 基于 Java 的大数据分布式存储在视频会议系统海量数据存储与回放中的应用