【发布时间】:2018-03-26 02:53:38
【问题描述】:
我查阅了一些关于使用 OpenCV 在 C++ 中访问像素值的教程。以修改每个像素值为例,使用 .ptr 比使用 .at 更快
我知道你如何计算赋值的新值也会影响你的表现,但我想知道使用 .ptr 是否总是比 .at 快?
即使我所做的是将一个像素与其相邻像素进行比较?
我正在编写一个代码来确定一个像素是否在其 8 个相邻像素附近以及来自两个不同的高斯模糊(不同 sigma)图像的另外 18 个像素附近是最大/最小的。 (是的,对于 SIFT)我目前正在使用 .at 来访问像素值,并且我可以告诉代码需要一些时间才能运行(因为有许多图像需要经过相同的过程)。我想知道使用 .ptr 是否会提高性能。
【问题讨论】:
-
添加到@bachinblack 的答案,尽量避免手动像素操作,而是尽可能多地尝试使用 OpenCV 的本机功能。这些功能是高度优化的。但是如果你必须处理像素数据,你可以使用parallel_for来加速你的代码,当然前提是你的算法可以并行化。