我正在尝试将图像从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
答案 0 :(得分:2)
我试图通过引用
将图像从main()传递给另一个函数
你实际上是通过指针传递它。变化:
gpuProcessing( &cpuBayerImage );
为:
gpuProcessing( cpuBayerImage );
我猜cpuBayerImage
只是cv::Mat
。函数gpuProcessing
接受const cv::Mat
的引用,而是取你的地址并给它一个指向cv::Mat
的指针。尽管是类似的概念,但指针和引用不能相互转换。