上次例程中简单提到了3种遍历图像像素的方式,但对于他们遍历的性能我们却一无所知。这次将详细介绍下opencv中遍历图像像素的方法,例程对应为 (TUTORIAL) how_to_scan_images,该例程将这3种方法分别用于图像的像素量化时候,通过测量运行100次的平均时间,进行性能对比,还和opencv自带的LUT函数进行对比,以此分析三种遍历方法的性能。由于源码较长,这次就不贴全部的源码,只挑出其中用的函数进行分析。
我们先来看下程序的运行结果,如下图所示。
可以发现,例程中展示了4种图像遍历的方法,运行结果给出了他们各自运行100次的时间,测试用的图片为512x512大小的彩色Lena图片。
1. C 下标访问的方法,耗时1.62311毫秒, 可以看出除了Opencv自带的LUT函数,这个方式是最快的
2. 迭代器遍历,耗时2.19939毫秒
3. on-the-fly,随机 遍历,耗时2.61471毫秒, 耗时较多,这是因为at访问带边界检测,为了保证了安全性能,牺牲了一定的速度
4. LUT 函数,这是opencv自带的函数,耗时1.03029毫秒,这是图像像素遍历的方式,比c的下标访