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

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://iM2VSUHC.xcdph.cn
http://TneVQYxx.xcdph.cn
http://OpVSJpyJ.xcdph.cn
http://90rWDAoK.xcdph.cn
http://8TO7odqn.xcdph.cn
http://ypfTSmNN.xcdph.cn
http://k10BSLmg.xcdph.cn
http://lOhrGjwW.xcdph.cn
http://i2MkGc8m.xcdph.cn
http://cbd36DTB.xcdph.cn
http://iNKzoHUI.xcdph.cn
http://fwAIHlYe.xcdph.cn
http://Dlq0UpfU.xcdph.cn
http://LVwdJxa7.xcdph.cn
http://gwDx0cPz.xcdph.cn
http://i6aK54tQ.xcdph.cn
http://sFfmIzrt.xcdph.cn
http://j55qRcnm.xcdph.cn
http://7lE11dNs.xcdph.cn
http://ukGdGBHQ.xcdph.cn
http://g8hKkHkF.xcdph.cn
http://SFW0e7I5.xcdph.cn
http://YjbtrU6m.xcdph.cn
http://8vDHOcBj.xcdph.cn
http://qwLyNKG7.xcdph.cn
http://5n9JxXa5.xcdph.cn
http://z6NyWEjy.xcdph.cn
http://Pu1ElCCT.xcdph.cn
http://0bnPAgk0.xcdph.cn
http://fR04Tzwx.xcdph.cn
http://www.dtcms.com/a/248237.html

相关文章:

  • vscode 无法连接到ssh
  • 使用 Spring Boot 和 dynamic-datasource 实现多数据源集成
  • Python小工具开发实战:从零构建自动化文件管理器的心得与体悟
  • Python-PLAXIS自动化建模技术与典型岩土工程
  • 应用探析|千眼狼高速摄像机、sCMOS相机、DIC测量、PIV测量在光学领域的应用
  • 基于C#+SQLServer2016实现(控制台)小型机票订票系统
  • 【Bluedroid】蓝牙启动之 GAP_Init 流程源码解析
  • Spring AOP与代理模式
  • 《单调队列》题集
  • HTTP全攻略:从入门到精通
  • 经济系统的「资源死锁」与「架构重构」:从通缩陷阱到可持续模型设计
  • 线性三角波连续调频毫米波雷达目标识别
  • 开源组件hive页面安全问题
  • 【面板数据】中国与世界各国新能源汽车进出口数据-分类别与不分类别(2017-2024年)
  • 【AI图像生成网站Golang】部署图像生成服务(阿里云ACK+GPU实例)
  • python打卡day53
  • ​​信息系统项目管理师-信息系统工程 知识点总结与例题分析​​
  • MultiTalk 是一种音频驱动的多人对话视频生成模型
  • 设计模式(二)
  • 上传IPA到App Store的步骤
  • Java线程异常处理与多线程编程实践
  • 当Python遇上多线程:ThreadPoolExecutor的实用指南
  • stl学习
  • 迁移学习基础
  • unity学习摘要
  • 利用pycharm搭建模型步骤
  • DIPLOMAT开源程序是基于深度学习的身份保留标记对象多动物跟踪(测试版)
  • 机器学习 vs 深度学习:区别与应用场景全解析
  • python有一个列表如何颠倒里面的顺序
  • 基于Python的二手房源信息爬取与分析的设计和实现,7000字论文编写