声明OpenCV 3.0 GpuMat Mask并填充值

时间:2015-10-01 22:34:07

标签: c++ opencv

我在Win 8.1 64位计算机上使用带有VS2012 C ++ / CLI的OpenCV 3.0。

此外,我还有一台带有CUDA 7.0的NVidia GTX 760。

我正在尝试检测SURF关键点,但仅限于ROI内。我使用非GPU代码工作,现在尝试使用GPU实现做同样的事情。为了做到这一点,我明白我首先需要创建一个填充了背景值(0)的掩码,然后在掩码中指定ROI并用另一个值(255)填充它。然后我将此掩码作为SURF调用的一部分传递。

以下代码应该创建掩码并用零填充。

cuda::GpuMat tMask(dImages->d_gpuGrayFrame->size(), dImages->d_gpuGrayFrame->type());
tMask.setTo(Scalar::all(0));  // crashes on this line

我也尝试过:

cuda::GpuMat tMask(dImages->d_gpuGrayFrame->size(),CV_8U);
tMask.setTo(Scalar::all(0));  // crashes on this line

我也尝试了以上两种方法,但是使用setTo行:

tMask.setTo(0);  // crashes on this line

但那仍然会崩溃。这有点令人困惑,因为我看到了例如link的例子,其中掩码被定义为:

GpuMat mask(object_gpu.size(), CV_8U, 0xFF);
mask.setTo(0xFF);

当我尝试类似的东西时,我甚至没有通过编译器,因为它说掩码调用无法识别为变体。

任何帮助,找出正在发生的事情。

0 个答案:

没有答案