【问题标题】:How to access pixel value fast in C++ with OpenCV如何使用 OpenCV 在 C++ 中快速访问像素值
【发布时间】:2018-03-26 02:53:38
【问题描述】:

我查阅了一些关于使用 OpenCV 在 C++ 中访问像素值的教程。以修改每个像素值为例,使用 .ptr 比使用 .at 更快

我知道你如何计算赋值的新值也会影响你的表现,但我想知道使用 .ptr 是否总是比 .at 快?

即使我所做的是将一个像素与其相邻像素进行比较?

我正在编写一个代码来确定一个像素是否在其 8 个相邻像素附近以及来自两个不同的高斯模糊(不同 sigma)图像的另外 18 个像素附近是最大/最小的。 (是的,对于 SIFT)我目前正在使用 .at 来访问像素值,并且我可以告诉代码需要一些时间才能运行(因为有许多图像需要经过相同的过程)。我想知道使用 .ptr 是否会提高性能。

【问题讨论】:

  • 添加到@bachinblack 的答案,尽量避免手动像素操作,而是尽可能多地尝试使用 OpenCV 的本机功能。这些功能是高度优化的。但是如果你必须处理像素数据,你可以使用parallel_for来加速你的代码,当然前提是你的算法可以并行化。

标签: c++ opencv


【解决方案1】:

documentation 表示 指针方法 在任何情况下都是最快的。其他方法只会更安全。 它还说.at() 方法是最耗时的,这应该可以解释您的性能不足

【讨论】:

  • 不需要用最后一句话来表达你的反应,文档确实说了你写的内容。同样,指针与迭代器也不需要您的意见 --- 同样,库中的文档具体说明了这一点,因此这不仅仅是您的意见 only :)。很好的答案,欢迎来到 Stack!虽然我建议使用指向 more recent OpenCV version docs 的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 2014-01-03
  • 1970-01-01
  • 2014-06-10
  • 2011-03-18
  • 1970-01-01
相关资源
最近更新 更多