当使用目前最新版本的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