OpenCV中CPU和GPU(CUDA)之间的结果不同

时间:2016-04-12 07:36:16

标签: opencv image-processing

我自己用VS 2013构建了OpenCV 3.0.0。

我将fastNlMeansDenoising(CPU版本和CUDA版本)应用于具有相同参数的同一图像, 但结果是不同的!!

发生了什么?

我猜原因是CPU和GPU的精度不同。

   #include <string>
   #include <opencv2/core/core.hpp>
   #include <opencv2/imgcodecs.hpp>
   #include <opencv2/highgui/highgui.hpp>
   #include <opencv2/photo/cuda.hpp>
   #include <opencv2/photo.hpp>

   using namespace std;
   using namespace cv;

   int main(){

       string imageName("input.bmp");

       //CPU version
       Mat image = imread(imageName.c_str(), IMREAD_GRAYSCALE);
       Mat reslutCPU;
       fastNlMeansDenoising(image, reslutCPU, 2.5, 7, 31);
       imwrite("cpu.bmp", reslutCPU);

       //CUDA version       
       cuda::GpuMat imageGPU;
       cuda::GpuMat reslutGPU;
       Mat buff;
       imageGPU.upload(image);
       cuda::fastNlMeansDenoising(imageGPU, reslutGPU, 2.5, 7, 31);
       reslutGPU.download(buff);
       imwrite("gpu.bmp", buff);

       return 0;
   }

0 个答案:

没有答案