OpenCV 3.1.0:从UMat中访问单个元素

3

我目前正在将一个基于OpenCV 2.4.9的程序转移到OpenCV 3.1.0,但是我在从Mat转换到UMat时遇到了问题。我使用Mat来存储需要访问单个二进制像素值的图片。在2.4.9中,我是这样做的:

Mat test_mat;
test_mat.at<uchar>(row,column);

很遗憾,通过我的研究,我还没有找到一种方法来完成与OpenCV 3.1.0提供的UMat相同的事情。有人有什么想法吗?如果这是一个非常琐碎的问题,请谅解。


如果有人想知道我为什么这样做,那是因为我需要3.1.0相对于2.4.9提供的处理速度提升。 - The_Walker
如果我的答案对您有帮助,请将其标记为已接受。如果没有帮助,可以添加评论以请求澄清或更正(根据您当前的声望,我猜您只能在自己的问题上发表评论,但不用担心,我会阅读它)。 - Nacho
1个回答

4
尝试以下操作:
UMat test_umat;
test_umat.getMat(ACCESS_READ).at<uchar>(row, column);

不同的访问标志如下:
  • ACCESS_READ(读取权限)
  • ACCESS_WRITE(写入权限)
  • ACCESS_RW(读写权限)
  • ACCESS_FAST(快速访问权限)

3
这个命令将数据转换为 cv::Mat() 格式,导致 UMat 的性能下降。所以问题是,UMat 类中是否有类似的 .at() 函数?这对我来说会非常有帮助。 - uelordi
你是正确的,OpenCV内部使用.getMat(Access)从函数中访问特定元素。 - uelordi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接