关于OpenCV Gpu模块无法使用Cuda4.2以上版本编译成功的解决方案

在尝试使用CUDA 5.0编译OpenCV_gpu模块时遇到问题。解决方法包括修改opencvmodulesgpusrcmatrix_reductions.cpp中nppiRectStdDev_32s32f_C1R函数的第三个参数,以及opencvmodulesgpusrcgraphcuts.cpp中特定函数的代码,以适应CUDA的新定义。
摘要由CSDN通过智能技术生成

当使用目前最新版本的Cuda 5.0编译opencv_gpu工程时,会出现以下问题:

matrix_reductions.cpp(119) : error C2660: “nppiMean_StdDev_8u_C1R”: 函数不接受 5 个参数

这是由于cuda接口出现变动造成的,稍微修改OpenCV源码即可成功编译。


需要修改部分如下:

1: opencv\modules\gpu\src\matrix_reductions.cpp 

找到如下函数

void cv::gpu::meanStdDev(const GpuMat& src, Scalar& mean, Scalar& stddev)

原本部分内容为:

    DeviceBuffer dbuf(2);

    nppSafeCall( nppiMean_StdDev_8u_C1R(src.ptr<Npp8u>(), static_cast<int>(src.step), sz, dbuf, (double*)dbuf + 1) );

    cudaSafeCall( cudaDeviceSynchronize() );
    
    double* ptrs[2] = {mean.val, stddev.val};
    dbuf.download(ptrs);

该函数的意图是,调用nppiMean_StdDev_8u_C1R,倒数两个参数分别放置了mean和stddev的返回值,通过DeviceBuffer::download从显存写会内存。而新的nppiMean_StdDev_8u_C1R函数描述如下:

/**
 * 1-channel 8-bit unsigned char image mean and standard deviati
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值