【问题标题】:how to access pixel in OpenCV Cuda (GpuMat)如何在 OpenCV Cuda (GpuMat) 中访问像素
【发布时间】:2020-01-13 07:02:41
【问题描述】:
cv::Mat image = cv::Mat::zeros(1920,1080,CV_8UC4); //it's an example (I use image have 4 channel)
cv::Vec4b& pixel = image.at<cv::Vec4b>(i,j) // i and j is rows and cols

我想使用 Cuda(GpuMat) 并且没有“.at”

如何更改访问像素的代码

【问题讨论】:

    标签: c++ opencv cuda pixel gpu


    【解决方案1】:

    cv::cuda::GpuMat 类的数据实时保存在 GPU/设备上,CPU/主机代码无法直接访问这些数据。这就是为什么没有等同于cv::Mat.at() 的原因。在主机和设备之间传输数据很慢,因此在cv::cuda::GpuMat 上执行每像素操作会比在cv::Mat 上慢得多。

    但是,可以编写执行逐像素操作的 CUDA 内核。恐怕虽然我无法就此提供好的建议,但这显然是可行的,并且有类似问题的答案such as this one 可能会对您有所帮助。

    除此之外,具体取决于您需要做什么,可能还有一个内置函数可以做类似的事情。

    【讨论】:

      猜你喜欢
      • 2012-04-23
      • 2019-11-06
      • 2013-11-12
      • 1970-01-01
      • 2018-02-16
      • 2011-11-24
      • 2021-05-08
      • 2019-01-02
      • 1970-01-01
      相关资源
      最近更新 更多