无法从'cv :: Mat *'转换为'const cv :: Mat'

时间:2015-06-24 11:04:16

标签: c++ opencv

我正在尝试将图像从main()传递到另一个函数。然后,我试图将该图像上传到GPU。但是这样做时我遇到了错误。

重要:我必须照顾计算时间。

我的代码:

void gpuProcessing( const Mat& cpuBayerImage)
{
    //Loading image to the GPU
    cv::gpu::GpuMat gpuBayerImage;
    gpuBayerImage.upload(cpuRawBayerImage);
}

int main ()
{
    ---
    Mat cpuBayerImage(size[1], size[0], CV_16UC1, imageData);
    gpuProcessing( &cpuBayerImage);
}

错误:

error C2664: 'gpuProcessing' : cannot convert parameter 1 from 'cv::Mat *' to 'const cv::Mat &'
1>          Reason: cannot convert from 'cv::Mat *' to 'const cv::Mat'
1>          No constructor could take the source type, or constructor overload resolution was ambiguous

1 个答案:

答案 0 :(得分:2)

  

我试图通过引用

将图像从main()传递给另一个函数

你实际上是通过指针传递它。变化:

gpuProcessing( &cpuBayerImage );

为:

gpuProcessing( cpuBayerImage );

我猜cpuBayerImage只是cv::Mat。函数gpuProcessing接受const cv::Mat的引用,而是取你的地址并给它一个指向cv::Mat的指针。尽管是类似的概念,但指针和引用不能相互转换。