• opencv图像加文字与运行时间


    //获取推断时间
    	vector<double>layterTimings;
    	double freq = getTickFrequency() / 1000;  //得到ms
    	double time = net.getPerfProfile(layterTimings) / freq; //layterTimings=每一层执行时间;每一层执行时间/freq=总的执行时间
    	ostringstream ss;
    	ss << "infernece:" << time << "ms";
    	putText(src, ss.str(), Point(10, 30), FONT_HERSHEY_SIMPLEX, 1, Scalar(255, 0, 0), 2, 8);
    

      

     是怎么得出来的呢?下面简要介绍一下

    时间计算:

    getTickCount():用于返回从操作系统启动到当前所经的计时周期数,看名字也很好理解,get Tick Count(s)。
    getTickFrequency():用于返回CPU的频率。get Tick Frequency。这里的单位是秒,也就是一秒内重复的次数。
    
    所以剩下的就很清晰了:
    总次数/一秒内重复的次数 = 时间(s)
    1000 *总次数/一秒内重复的次数= 时间(ms)
    
    这个逻辑很清晰,没什么问题,但是这里有一个小坑,那就是C版本的cvGetTickFrequency()函数和C++版本的getTickFrequency()的单位不一样,前者以ms计算频率,后者以s为单位计算频率,所以如果使用C版本的cvGetTickFrequency()计算时间的话,应该是:
    总次数/一秒内重复的次数*1000 = 时间(ms)
    总次数/一秒内重复的次数*1000000 = 时间(s)
    
    double freq = getTickFrequency() / 1000;  //得到ms
    double time = net.getPerfProfile(layterTimings) / freq; //layterTimings=每一层执行时间;每一层执行时间/freq=总的执行时间

    函数详细信息可参考https://blog.csdn.net/you_big_father/article/details/90604390

    参考:https://blog.csdn.net/chaipp0607/article/details/71056580

         

  • 相关阅读:
    indexDB数据库
    使用数据库实现web留言板
    简易存储读取
    随手记
    小程序三:app对象的使用
    小程序二:配置
    文件上传新方式 files 对象创建
    AJAX 上传多文件
    Uncaught TypeError: Illegal invocation问题解决方法
    nodeJs 复制文件夹及文件
  • 原文地址:https://www.cnblogs.com/fcfc940503/p/11993637.html
Copyright © 2020-2023  润新知