OpenCV(cv::getTickCount()、cv::getTickFrequency())
getTickCount() 和 getTickFrequency() 是 OpenCV 库中的两个函数,通常用于获取高精度的时间间隔。这两个函数主要用于计时和性能测量。
1. getTickCount()
getTickCount() 函数用于返回从系统启动到当前为止的时间滴答数(ticks)。一个 "tick" 是一个时钟周期的计数,通常与 CPU 时钟或操作系统时钟的分辨率相关。
- 
原型:
int64 getTickCount(); - 
返回值:
返回一个 64 位的整数,这个整数表示自系统启动以来的滴答数(tick count)。 - 
使用场景:
getTickCount()常用于测量程序中某段代码的执行时间。因为getTickCount()返回自系统启动以来的滴答数,因此我们可以在代码的不同部分调用getTickCount()来测量这些滴答数之间的差值,并结合系统时钟频率(即每秒的滴答数)来计算执行时间。 - 
示例:
int64 start = cv::getTickCount(); // 执行一些操作 doSomeProcessing(); int64 end = cv::getTickCount(); double timeInSeconds = (end - start) / cv::getTickFrequency(); std::cout << "Processing time: " << timeInSeconds << " seconds." << std::endl;在上述代码中,
getTickCount()在操作前后调用,得到两个滴答数start和end,通过两者的差值可以得到操作的执行时间,随后除以getTickFrequency()获取以秒为单位的时间。 
2. getTickFrequency()
getTickFrequency() 函数返回每秒的滴答数(即滴答频率),这个频率是固定的,它表示每秒内系统时钟产生的滴答数。
- 
原型:
double getTickFrequency(); - 
返回值:
返回一个双精度浮点数,表示系统时钟每秒产生的滴答数。 - 
使用场景:
getTickFrequency()通常与getTickCount()配合使用,用于将滴答数转化为秒。因为滴答频率表示每秒的滴答数,所以在计算某段时间的滴答差值时,可以将其除以滴答频率来得到以秒为单位的时间。 - 
示例:
double freq = cv::getTickFrequency(); std::cout << "Tick frequency: " << freq << " ticks per second." << std::endl;在这个例子中,
getTickFrequency()返回了当前系统的时钟频率。 
3. 综合应用
两者结合使用通常用来测量时间,例如,可以计算某段代码的执行时间:
int64 start = cv::getTickCount();  // 获取起始滴答数
// 执行的任务
doSomeProcessing();
int64 end = cv::getTickCount();  // 获取结束滴答数
// 计算滴答差值
int64 ticks = end - start;
// 计算执行时间(秒)
double timeInSeconds = ticks / cv::getTickFrequency();
std::cout << "Time elapsed: " << timeInSeconds << " seconds." << std::endl;
4. 注意事项
getTickCount()返回的滴答数从系统启动时开始累积,如果系统重启,这个值将重置为 0。getTickFrequency()是一个固定值,通常由系统硬件或操作系统决定。
这两个函数是非常高效的用于时间测量的工具,尤其适用于实时系统、图像处理等需要精确时间控制的领域。
                    
                
                
            
        
浙公网安备 33010602011771号