OpenCV GPU模块+NPP

  NVIDIA Performance Primitives(NPP)是一系列GPU加速的图像、视频以及信号处理函数,与同级别的纯CPU函数相比,这些函数最高可实现5 - 10倍性能提升。利用NPP,开发者能够利用2000多个图像处理与信号处理基元,在数小时之内即可实现应用程序的大幅性能提升。
  无论用GPU加速的版本代替CPU版本还是将NPP与现有的GPU加速流水线相结合,NPP都能够实现极高的性能,同时可缩短开发时间。

  由于NPP例程中与图像相关的库使用的是freeImage,这里使用OpenCV2.4中的函数。
  就/7_CUDALibraries/boxFilterNPP的例程来说,有如下几种方法。

使用GpuMat

#include "cuda_runtime.h"
#include <iostream>
#include "opencv2/gpu/gpu.hpp"
#include "opencv2/opencv.hpp"
#include <npp.h>

using namespace std;
using namespace cv;

int main()
{    
    //读取图片到主机端
    Mat hSrc = imread("../zero.jpg",1);
    imshow("Input",hSrc);

    //将输入图片上传到设备端
    gpu::GpuMat dSrc;
    dSrc.upload(hSrc);

    // 大部分情况下GpuMat::isContinuous() == false , 即hSrc.step一般不等于cols*channels
    cout<<"Image on host memory, step = "<<hSrc.step<<"  isContinuous? "<<hSrc.isContinuous()<<endl;
    cout<<"Image on device memory, step = "<<dSrc.step<<"  isContinuous? "<<dSrc.isContinuous()<<endl;

    // 设置滤波器参数
    // create struct with box-filter mask size
    NppiSize oMaskSize = {
  5, 5};
   
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值