(含源码)利用GPU加速Python图像缩放

该博客介绍了如何利用NVIDIA的视觉编程接口(VPI)加速Python中的图像缩放过程。通过选择CPU、CUDA或VIC后端,VPI可以在Jetson嵌入式设备和独立GPU上加速图像处理任务,如过滤、扭曲、降噪等。提供的代码示例展示了如何应用低通滤波并进行下采样,将图像缩小到原始尺寸的一半宽和三分之一高,最后将结果保存到磁盘。
摘要由CSDN通过智能技术生成

利用GPU加速Python图像缩放

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

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

除了与 OpenCV 接口外,VPI 还能够与 PyTorch 和其他基于 Python 的库进行互操作。

下面的示例通过首先应用低通滤波器来重新缩放输入图像以避免混叠,然后进行下采样。生成的图像具有输入宽度的一半和输入高度的三分之一。然后将结果保存到磁盘。

输入图像:
在这里插入图片描述
输出图像:
在这里插入图片描述

 import sys
 import vpi
 import numpy as np
 from PIL import Image
 from argparse import ArgumentParser
  
 # Parse command line arguments
 parser = ArgumentParser()
 parser.add_argument('backend', choices=['cpu','cuda','vic'],
                     help='Backend to be used for processing')
  
 parser.add_argument('input',
                     help='Image to be used as input')
  
 args = parser.parse_args();
  
 if args.backend == 'cpu':
     backend = vpi.Backend.CPU
 elif args.backend == 'cuda':
     backend = vpi.Backend.CUDA
 else:
     assert args.backend == 'vic'
     backend = vpi.Backend.VIC
  
 # Load input into a vpi.Image
 input = vpi.asimage(np.asarray(Image.open(args.input)))
  
 # Using the chosen backend,
 with backend:
     # First convert input to NV12_ER.
     # We're overriding the default backend with CUDA.
     temp = input.convert(vpi.Format.NV12_ER, backend=vpi.Backend.CUDA)
  
     # Rescale the image using the chosen backend
     temp = temp.rescale((input.width//2, input.height//3))
  
     # Convert result back to input's format
     output = temp.convert(input.format, backend=vpi.Backend.CUDA)
  
 # Save result to disk
 Image.fromarray(output.cpu()).save('scaled_python'+str(sys.version_info[0])+'_'+args.backend+'.png')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地的小何尚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值