C++ 如何在OpenCV Cuda(GpuMat)中访问像素 cv::Mat image=cv::Mat::zeros(19201080,cv_8UC4)//这是一个例子(我使用图像有4个通道) cv::Vec4b&pixel=image.at(i,j)//i和j是行和列

C++ 如何在OpenCV Cuda(GpuMat)中访问像素 cv::Mat image=cv::Mat::zeros(19201080,cv_8UC4)//这是一个例子(我使用图像有4个通道) cv::Vec4b&pixel=image.at(i,j)//i和j是行和列,c++,opencv,cuda,pixel,gpu,C++,Opencv,Cuda,Pixel,Gpu,我想使用Cuda(GpuMat),但没有“.at” 如何更改访问像素的代码cv::cuda::GpuMat类的数据位于GPU/设备上,CPU/主机代码无法直接访问。这就是为什么没有与cv::Mat.at()。在主机和设备之间传输数据的速度很慢,因此在cv::cuda::GpuMat上执行每像素操作将比在cv::Mat上慢得多 然而,可以编写执行每像素操作的CUDA内核。我担心,虽然我不能在这方面给出好的建议,但这显然是可行的,类似问题的答案可能会对你有所帮助 除此之外,根据您需要执行的操作,可能

我想使用Cuda(GpuMat),但没有“.at”


如何更改访问像素的代码
cv::cuda::GpuMat
类的数据位于GPU/设备上,CPU/主机代码无法直接访问。这就是为什么没有与
cv::Mat.at()。在主机和设备之间传输数据的速度很慢,因此在
cv::cuda::GpuMat
上执行每像素操作将比在
cv::Mat
上慢得多

然而,可以编写执行每像素操作的CUDA内核。我担心,虽然我不能在这方面给出好的建议,但这显然是可行的,类似问题的答案可能会对你有所帮助

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

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