1

我正在研究 OpenCV GPU。我想知道,我们可以GpuMat直接在 C++ 代码中访问元素吗?对这件事知之甚少是不可能的。我正在将数据从 GPU 内存下载到 CPU 内存,然后使用“at”运算符访问元素。

但我需要这样的东西:对于 2x3 矩阵:元素应填充如下:

Mat abc(0 , 0) = 1;
Mat abc(0, 1) = 2;
Mat abc (0 , 2) = 3;
Mat abc(1 , 0) = 1;
Mat abc(1, 1) = 2;
Mat abc (1 , 2) = 3;

即,用不同的值填充每一列。在 for 循环中使用“at”运算符非常耗时。是否有任何 API 或其他方式可以在更短的时间内完成。

4

1 回答 1

3

GpuMat提供cv::Mat. _ 您可以创建一个子矩阵col()并使用setTo()它来填充数据:

cv::gpu::GpuMat gm(3,3,CV_8UC1);
for (int i = 0; i < gm.cols; ++i)
{
    auto column = gm.col(i);
    auto val = cv::Scalar(i + 1);    // This value is just to reflect your example.
    column.setTo(val);
}
于 2013-07-18T20:32:02.973 回答