OpenCV实战——实现高效图像扫描循环
0. 前言
在《像素操作》一节中,我们介绍了扫描图像以处理其像素的不同方法。在本节中,我们将学习比较这些方法的计算效率。编写图像处理函数时,效率通常是一个需要考虑的问题。设计函数时,经常需要检查代码的计算效率,以检测处理中可能减慢程序速度的瓶颈操作。
但是,需要注意的是,除非必要,否则不应以降低程序明确性为代价进行优化。简单的代码相对更容易调试和维护,只有对程序效率至关重要的代码部分才应进行大量优化。
1. 测量代码运行时间
为了测量函数或某一部分代码的执行时间,可以使用 OpenCV
函数 cv::getTickCount()
,此函数可以提供自上次启动计算机以来发生的时钟周期数。由于通常我们希望以秒为单位给出代码部分的执行时间,因此我们需要使用另一种方法 cv::getTickFrequency()
来获取每秒的周期数。总体而言,为了获得给定函数(或某一部分代码)的执行时间,通常使用以下方式:
(1) 获取开始时间点:
const int64 start = cv::getTickCount