如何在OpenCV Cuda(GpuMat)中访问像素

how to access pixel in OpenCV Cuda (GpuMat)

本文关键字:访问 像素 GpuMat OpenCV Cuda      更新时间:2023-10-16
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">

如何更改访问像素的代码

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

但是,可以编写执行每像素操作的 CUDA 内核。恐怕虽然我不能就此给出好的建议,但这显然是可行的,并且有类似问题的答案,例如这个可能会对您有所帮助。

除此之外,根据您需要执行的操作,可能会有一个内置函数执行类似操作。