OpenCV CUDA模块图像变形------对图像进行GPU加速的透视变换函数warpPerspective()

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

算法描述

该函数用于对图像进行 GPU 加速的透视变换(Perspective Transformation),是 cv::warpPerspective 的 CUDA 版本。支持任意角度的投影变换,适用于图像矫正、视角变换等场景。

函数原型

void cv::cuda::warpPerspective 	
(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
M3x3 的透视变换矩阵(Mat 或 UMat 类型)。
dsize输出图像的尺寸(宽 x 高)。
flags插值方法组合(参考 resize 函数),以及可选标志 WARP_INVERSE_MAP,表示 M 是一个逆变换(即从目标图像到源图像的映射)。仅支持 INTER_NEARESTINTER_LINEARINTER_CUBIC 插值方法。
borderMode像素外推方法(边界填充方式)。
borderValue当边界模式为 BORDER_CONSTANT 时使用的填充值,默认为黑色(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 );// 定义源图像中的四个点和目标图像中的对应点cv::Point2f srcPoints[ 4 ] = { { 0, 0 }, { h_src.cols - 1, 0 }, { 0, h_src.rows - 1 }, { h_src.cols - 1, h_src.rows - 1 } };cv::Point2f dstPoints[ 4 ] = {{ h_src.cols * 0.1f, h_src.rows * 0.1f }, { h_src.cols * 0.9f, h_src.rows * 0.2f }, { h_src.cols * 0.2f, h_src.rows * 0.8f }, { h_src.cols * 0.8f, h_src.rows * 0.9f }};// 构造透视变换矩阵cv::Mat M = cv::getPerspectiveTransform( srcPoints, dstPoints );// 设置输出尺寸cv::Size dsize( h_src.cols, h_src.rows );// 执行透视变换cv::cuda::warpPerspective( d_src, d_dst, M, dsize, cv::INTER_LINEAR );// 下载并显示结果cv::Mat h_dst;d_dst.download( h_dst );cv::imshow( "Original Image", h_src );cv::imshow( "Warped Perspective Image", h_dst );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/909485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达机器学习笔记(2)—单变量线性回归

目录 一、模型表示 二、代价函数 三、代价函数的直观理解&#xff08;1&#xff09; 四、代价函数的直观理解&#xff08;2&#xff09; 五、梯度下降 六、梯度下降的直观理解 七、线性回归的梯度下降 在本篇内容中&#xff0c;我们将介绍第一个机器学习算法——线性回归…

最新华为 HCIP-Datacom(H12-821)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;&#xff0c;完整题库请上方访问&#xff0c;更新完毕。 在OSPF网络中&#xff0c;NSSA区域与STUB区域都是为了减少LSA数量&#xff0c;两者最主要的区别在于&#xff0c;NSSA区域可以引入外部路由&#xff0c;并同时接收OSPF…

vba学习系列(11)--批退率通过率等数据分析

系列文章目录 文章目录 系列文章目录前言一、外观报表1.产能2.固定伤排查3.镜片不良TOP4.镜片公式计算5.镜片良率计算6.镜片批退率7.镜筒不良TOP8.镜筒公式计算9.镜筒良率计算10.镜筒批退率 二、反射率报表1.机台通过率2.镜片通过率圈数分析3.镜片通过率罩次分析4.镜筒通过率圈…

成功在 Conda Python 2.7 环境中安装 Clipper(eCLIP peak caller)

&#x1f52c; 成功在 Conda Python 2.7 环境中安装 Clipper&#xff08;eCLIP peak caller&#xff09; 本文记录了如何在无 root 权限下使用 Conda 环境&#xff0c;解决依赖、构建扩展模块并成功安装运行 clipper 的详细流程。适用于再现 eCLIP 分析流程时遇到 clipper 安装…

通过 VS Code 连接 GitLab 并上传项目

通过 VS Code 连接 GitLab 并上传项目&#xff0c;请按照以下步骤操作&#xff1a; 1. 安装必要工具 确保已安装 Git 并配置用户名和邮箱&#xff1a; git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 在 VS Cod…

开源夜莺支持MySQL数据源,更方便做业务指标监控了

夜莺监控项目最核心的定位&#xff0c;是做一个告警引擎&#xff0c;支持多种数据源的告警。这个版本的更新主要是增加了对 MySQL 数据源的支持&#xff0c;进一步增强了夜莺在业务指标监控方面的能力。 之前版本的夜莺主要聚焦在 Prometheus、VictoriaMetrics、ElasticSearch…

SpringCloud + MybatisPlus:多租户模式与实现

一、多租户的基本概念 多租户(Multi-Tenancy) 是指在一套软件系统中,多个租户(客户)共享相同的基础设施和应用程序,但数据和配置相互隔离的架构模式。其核心目标是 降低成本 和 保证数据安全。 核心特点: 资源共享:租户共享服务器、数据库、代码等资源。数据隔离:通…

Kafka入门:解锁核心组件,开启消息队列之旅

一、引言 Kafka以超高速吞吐、精准的路由策略和永不掉线的可靠性&#xff0c;让海量数据在分布式系统中畅行无阻。无论你是刚接触消息队列的技术小白&#xff0c;还是寻求性能突破的开发老手&#xff0c;掌握 Kafka 核心组件的运作原理&#xff0c;都是解锁高效数据处理的关键…

前端项目Excel数据导出同时出现中英文表头错乱情况解决方案。

文章目录 前言一、Excel导出出现中英文情况。二、解决方案数据处理 三、效果展示总结 前言 在前端项目中实现Excel导出功能时&#xff0c;数据导出excel是常见的业务需求。但excel导出完表头同时包含了中文和英文的bug&#xff0c;下面是我的经验分享&#xff0c;应该可以帮助…

《开窍》读书笔记8

51.学会赞美他人&#xff0c;能净化心灵&#xff0c;建立良好人际关系&#xff0c;让生活充满阳光。 52.欣赏他人的学习过程&#xff0c;能激发潜能&#xff0c;促进相互成长&#xff0c;让有点共存。 53.别因“自我”一叶障目&#xff0c;要关注他人&#xff0c;欣赏与别欣赏式…

基于 Spring Cloud Gateway + Sentinel 实现高并发限流保护机制

基于 Spring Cloud Gateway Sentinel 实现视频播放接口限流保护机制 作者&#xff1a;NovaTube 开发者 &#xff5c; 时间&#xff1a;2025-06 标签&#xff1a;Spring Cloud Gateway、Sentinel、微服务、限流、接口保护 一、背景介绍 在我们开发的在线视频分享平台 NovaTube…

CountDownLatch入门代码解析

文章目录 核心思想&#xff1a;火箭发射倒计时 &#x1f680;最简单易懂的代码示例代码解析运行流程分析 核心思想&#xff1a;火箭发射倒计时 &#x1f680; 想象一下发射火箭的场景&#xff0c;在按下最终的发射按钮之前&#xff0c;必须有好几个系统同时完成自检&#xff0…

用Python写一个可视化大屏

用Python打造可视化大屏&#xff1a;数据洞察新视界 在当今数据爆炸的时代&#xff0c;数据可视化成为了理解和传达复杂信息的关键工具。Python作为一门强大且灵活的编程语言&#xff0c;提供了丰富的库和工具&#xff0c;让我们能够创建出令人惊叹的可视化大屏。本文将带你逐步…

20250611让NanoPi NEO core开发板在Ubuntu core16.04系统下开机自启动的时候拉高GPIOG8

rootNanoPi-NEO-Core:/# touch open_4g_ec20.sh rootNanoPi-NEO-Core:/# vi open_4g_ec20.sh 【打开使能引脚200 IOG8】 echo 200 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio200/direction echo 1 > /sys/class/gpio/gpio200/value 【切记&#xff1a…

解惑1、为何大容量电容滤低频,小容量电容滤高频

一、电容的种类&#xff1a; 链接&#xff1a; 二、疑惑 理论推算&#xff1a; 1&#xff09;Zc1/wc&#xff0c;那么大容量和小容量的电容&#xff0c;不应该都是 越高频越阻抗低&#xff0c;越容易通过&#xff1f; 2&#xff09;大容量&#xff0c;积蓄电荷速度慢&#…

如何有效监控JVM环境,保障应用性能

缓慢的Java应用程序、意外崩溃和晦涩的内存问题——这些都是JVM可能在默默承受压力的信号。JVM监控对于保障Java应用的正常运行时间和最佳性能至关重要&#xff0c;它提供了对Java虚拟机内存、线程和CPU资源使用情况的可见性&#xff0c;使管理员能够在影响终端用户之前识别性能…

python:PyQt5 开发一个邮件客户端,能编写邮件,发送邮件及附件

PyQt5 邮件客户端 下面是一个简洁高效的邮件客户端实现&#xff0c;支持编写邮件、添加附件和发送邮件功能&#xff1a; 编写 eMailClient_qt.py 如下 # -*- coding: utf-8 -*- """ 用 PyQt5 开发一个邮件客户端&#xff0c;能编写邮件&#xff0c;发送邮件及…

React【回顾】 深层次面试详解:函数式组件核心原理与高级优化

以下是对 React 深层次内容的全面解析,涵盖函数式组件的核心原理、性能优化、设计模式和最新特性: 🔧 一、React 核心机制剖析 1. Fiber 架构深解 Fiber 节点结构:function FiberNode(tag, pendingProps, key) {this.tag = tag; // 组件类型(函数组件=0, 类…

视觉语言模型的“视而不见“

这项研究发现&#xff0c;号称能“看图说话”的视觉语言模型&#xff08;VLMs&#xff09;&#xff0c;在处理需要真正“看”懂图片的纯视觉任务&#xff08;如判断深度、找对应点、认物体材质等&#xff09;时&#xff0c;表现远不如它们自己内部的“眼睛”&#xff08;视觉编…

Wyn 商业智能与 3D 大屏的深度融合应用

引言 在当今数字化快速发展的时代&#xff0c;数据可视化对于企业的决策和管理变得至关重要。商业智能软件作为数据可视化的重要工具&#xff0c;能够帮助企业将海量的数据转化为直观、易懂的信息。而 3D 大屏以其沉浸式、立体的展示效果&#xff0c;为数据可视化带来了全新的…