(含源码)利用NVIDIA VPI之透视变换

更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561

文章目录

  • (含源码)利用NVIDIA VPI之透视变换

NVIDIA 视觉编程接口 (VPI: Vision Programming Interface) 是 NVIDIA 的计算机视觉和图像处理软件库,使您能够实现在 NVIDIA Jetson 嵌入式设备和独立的GPU 上可用的不同硬件后端上加速的算法。

库中的一些算法包括过滤方法、透视扭曲、时间降噪、直方图均衡、立体视差和镜头失真校正。 VPI 提供易于使用的 Python 绑定以及 C++ API。

除了与 OpenCV 接口外,VPI 还能够与 PyTorch 和其他基于 Python 的库进行互操作。 在这篇文章中,我们将通过基于 PyTorch 的目标检测和跟踪示例向您展示这种互操作性如何工作。 有关详细信息,请参阅视觉编程接口 (VPI) 页面和视觉编程接口文档。

下面的示例获取输入视频并输出视频,其中对每一帧应用不同的透视扭曲。 结果是透视弹跳效果。 可以修改示例应用程序以从相机获取输入并实时应用效果。

import cv2import sysimport vpiimport numpy as npfrom math import sin, cos, pifrom argparse import ArgumentParser# ----------------------------# Parse command line argumentsparser = ArgumentParser()parser.add_argument('backend', choices=['cpu', 'cuda','vic'],help='Backend to be used for processing')parser.add_argument('input',help='Input video to be denoised')args = parser.parse_args();if args.backend == 'cuda':backend = vpi.Backend.CUDAelif args.backend == 'cpu':backend = vpi.Backend.CPUelse:assert args.backend == 'vic'backend = vpi.Backend.VIC# -----------------------------# Open input and output videosinVideo = cv2.VideoCapture(args.input)fourcc = cv2.VideoWriter_fourcc(*'MPEG')inSize = (int(inVideo.get(cv2.CAP_PROP_FRAME_WIDTH)), int(inVideo.get(cv2.CAP_PROP_FRAME_HEIGHT)))fps = inVideo.get(cv2.CAP_PROP_FPS)outVideo = cv2.VideoWriter('perspwarp_python'+str(sys.version_info[0])+'_'+args.backend+'.mp4',fourcc, fps, inSize)#--------------------------------------------------------------# Main processing loopcurFrame = 1while True:print("Frame: {}".format(curFrame))curFrame+=1# Read one input frameret, cvFrame = inVideo.read()if not ret:break# Convert it to NV12_ER format to be used by VPIwith vpi.Backend.CUDA:frame = vpi.asimage(cvFrame).convert(vpi.Format.NV12_ER)# Calculate the transformation to be applied ------------# Move image's center to origin of coordinate systemT1 = np.array([[1, 0, -frame.width/2.0],[0, 1, -frame.height/2.0],[0, 0, 1]])# Apply some time-dependent perspective transformv1 = sin(curFrame/30.0*2*pi/2)*0.0005v2 = cos(curFrame/30.0*2*pi/3)*0.0005P = np.array([[0.66, 0, 0],[0, 0.66, 0],[v1, v2, 1]])# Move image's center back to where it wasT2 = np.array([[1, 0, frame.width/2.0],[0, 1, frame.height/2.0],[0, 0, 1]])# Do perspective warp using the backend passed in the command line.with backend:frame = frame.perspwarp(np.matmul(T2, np.matmul(P, T1)))# Convert it to RGB8 for output using the CUDA backendwith vpi.Backend.CUDA:frame = frame.convert(vpi.Format.RGB8)# Write the denoised frame to the output videowith frame.rlock_cpu() as data:outVideo.write(data)

原视频:

处理结果:

更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561

(含源码)利用NVIDIA VPI之透视变换相关推荐

  1. 利用多线程爬虫搭建代理ip池的两种方法(含源码)

    搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...

  2. 车牌检测模型训练(含源码和数据集)

    车牌检测模型训练(含源码和数据集) 本教程利用NVIDIA TAO进行车牌检测模型的训练: 模型框架:SSD 数据集: CRPD, 连接:https://github.com/yxgong0/CRPD ...

  3. Hyperledger Fabric Rest API服务开发教程【含源码】

    Hyperledger Fabric Rest API服务开发教程[含源码] Hyperledger Fabric 提供了软件开发包/SDK以帮助开发者访问fabric网络 和部署在网络上的链码,但是 ...

  4. 面部表情识别3:Android实现表情识别(含源码,可实时检测)

    面部表情识别3:Android实现表情识别(含源码,可实时检测) 目录 面部表情识别3:Android实现表情识别(含源码,可实时检测) 1.面部表情识别方法 2.人脸检测方法 3.面部表情识别模型训 ...

  5. 手把手教你SSM整合开发办公系统(OA)——报销单(含源码)

    文章目录 前言 项目展示 技能要求 一.开始前的准备 1.OA系统是什么? 2.人员权利与报销流程 3.数据库设计 4.创建项目及作用说明 5.包与全局变量配置 6.编写过滤器 7.静态资源的复制与请 ...

  6. Eatting外卖基于瑞吉外卖代码全功能优化含源码

    Eatting外卖基于瑞吉外卖代码全功能优化含源码 文章目录 项目的最终部署 源码地址 github:[源码地址](https://github.com/yangxingyue0623/Eating_ ...

  7. [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表

    [源码解析] NVIDIA HugeCTR,GPU版本参数服务器- (5) 嵌入式hash表 文章目录 [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表 ...

  8. 【Matlab路径规划】蚁群算法机器人大规模栅格地图最短路径规划【含源码 1860期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]蚁群算法机器人大规模栅格地图最短路径规划[含源码 1860期] 二.蚁群算法及栅格地图简介 随着机器人技术在诸多领域的应用, 如机器人协作焊接.灾 ...

  9. 【Matlab WSN通信】A_Star改进LEACH多跳传输协议【含源码 487期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]蚁群算法机器人大规模栅格地图最短路径规划[含源码 1860期] 二.蚁群算法及栅格地图简介 随着机器人技术在诸多领域的应用, 如机器人协作焊接.灾 ...

最新文章

  1. 下一代搜索引擎长啥样?Google 给出了TA的答案
  2. Yii2 获取URL的一些方法
  3. 优先级调度算法(C++实现)
  4. 数据可视化的利器-Seaborn简易入门
  5. Python 语法细节(Python 2.x 与 Python 3.x 语法差异)
  6. python爬虫cookie池 与ip绑定_Python爬虫防封ip的一些技巧
  7. 漫画:什么是中间人攻击
  8. mysql查看导入大小_mysql 数据导入、导出,及库大小查看
  9. C++ p63作业 2
  10. matlab优化设计大作业答案,优化设计有哪些方法(2019优化设计答案大全)
  11. 免费使用微软Azure进行文字转语音的三种方法!最自然接近人声的机器配音技术。
  12. [数字媒体] PR视频剪辑之竖屏实现横屏旋转切换和大视频文件缩小
  13. python和java反射_python的反射和自省
  14. wav转mp3 c语言源码,C/C++知识点之mp3格式转wav格式 附完整C++算法实现代码
  15. 《敏捷教练-如何打造优秀的敏捷团队》读书笔记
  16. 大视角、大方向、大问题、大架构:(结局)解决问题的出发点
  17. 高瓴投的澳斯康生物冲刺科创板:年营收4.5亿 丢掉与康希诺合作
  18. 中小型园区网络的设计与实现 (一)
  19. 登堂入室之soc开发环境及硬件开发准备
  20. 常用测量工具使用(五分钟学会使用)

热门文章

  1. Raptor-水仙花数
  2. 【PAT甲级】A1051-A1100刷题记录
  3. python 判断三角形
  4. 【Python】09 数值内插
  5. 怎么将流程图转化为N-S图(盒图)?
  6. asciI 字符代码表
  7. 身份证提取生日,判断性别
  8. 新媒体运营需要做些什么
  9. 网页中这 10 种字体的运用方式,不会让人觉得 Low
  10. 美国人这样教育小学生(转载)