0%

opencv的计时函数的使用

统计代码的运行时间的方式有多种,opencv库也提供了几种,使用方便,但是和其他计时函数有容易混淆的地方。

cv库计时函数介绍

int64 getTickCount(void) 在window下得到性能计数器的值。
double getTickFrequency(void) 在window得到性能计数器的频率
使用如下代码计算时间。

1
2
3
double t = (double)getTickCount();
// 某一段程序
t = ((double)getTickCount() - t)/getTickFrequency();

到此为止了,很简单了,得到了某段程序的运行时间。
还是有一个混淆点需要注意和提醒的。就是和GetTickCount()不小心写混了。

getTickCount()和GetTickCount()混淆与避免方式

这个混淆一但写了可不容易发现。
前者是opencv的函数cv::getTickCount().得到性能计数器的值。
GetTickCount()是window的api,会返回window系统的时间。在window下,一旦误用,系统不会报错的。结果却是极具误导性的
它的精度不高10-16ms。既然返回的是自系统开始到调用时的时间,目前看文档它的值最多是49.7天,自然它也可以用来计时,不过精度不高。

只要记得不用混用以及类型转换(要转换为double,见上面的例子代码)就不会出错。