如何在openCv中将常量double值与GpuMat相乘?

时间:2013-09-18 11:08:07

标签: c++ opencv

我正在使用OpenCv 2.4.6 Library和VS 2010.我在mypenCv这个带有笔记本电脑的库上编译了O Cuda 4.2.9并且它工作正常。现在我想用cv :: GpuMat乘以1.5。那么我如何在VS 2010中使用OpenCv 2.4.6呢? cv :: Mat很容易。 像例子

cv :: Mat mat = cv :: imread(“readImg.tiff”,CV_LOAD_IMAGE_GRAYSCALE);
cv :: GpuMat gpuMat(mat); cv :: Mat newMat = mat *(1 + 0.5);

现在我如何在OpenCv中使用cv :: gpu :: GpuMat gpuMat进行这种mathamatical操作?

2 个答案:

答案 0 :(得分:3)

您可以使用convertTo方法:

cv::GpuMat gpuMat(mat);
gpuMat.convertTo(gpuMat, gpuMat.type(), 1.5); // gpuMat = 1.5 * gpuMat

答案 1 :(得分:0)

您可以使用NVIDIA Performance Primitives (NPP)

//You need to include npp.h
float c[] = {0.25, 0.5, 0.75};
NppiSize ns;
ns.height = src.rows;
ns.width = src.cols;
//for CV_32FC3
nppiMulC_32f_C3R(src.ptr<Npp32f>(), static_cast<int>(src.step), c, dst.ptr<Npp32f>(), static_cast<int>(dst.step), ns);