测试视屏帧率

news/2024/11/8 14:58:01/

测试视屏帧率的代码

//C++代码

    // 记录帧率static map<int, int> fps_record;static map<int, std::chrono::steady_clock::time_point> fps_time;fps_record[channel_id]++;auto last_rec_time = fps_time[channel_id];auto passed = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - last_rec_time);if(passed.count() > 3000){if(passed.count() < 0xffff){float fps =  fps_record[channel_id] * 1000 / passed.count();std::cout << "CHANNEL: " << channel_id << " STREAM FPS: " << fps << std::endl;}fps_record[channel_id] = 0;fps_time[channel_id] = std::chrono::steady_clock::now();}

or

获取从程序运行时到现在的时间(和下面系统时间区别开),在xavier nvidia agx板子上不适用。

		clock_t start = clock();std::vector<torch::Tensor> r = yolo.prediction(frame);clock_t ends = clock();std::cout << start << std::endl;std::cout << ends << std::endl;std::cout <<"Running Time : "<<(double)(ends - start) / CLOCKS_PER_SEC <<  std::endl; #算出时间单位为秒

获取系统时间

3.与日期和时间相关的数据结构 在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下: #ifndef _TM_DEFINED 
struct tm { int tm_sec;      /* 秒 – 取值区间为[0,59] */ int tm_min;      /* 分 - 取值区间为[0,59] */ int tm_hour;     /* 时 - 取值区间为[0,23] */ int tm_mday;     /* 一个月中的日期 - 取值区间为[1,31] */ int tm_mon;      /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ int tm_year;     /* 年份,其值等于实际年份减去1900 */ int tm_wday;     /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此推 */int tm_yday;     /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */ int tm_isdst;    /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ }; 
#define _TM_DEFINED 
#endif ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。
    	struct tm *t;           // tm结构指针time_t now;             //声明time_t类型变量time( &now );           //获取系统日期和时间t = localtime( &now );  //获取当地日期和时间char cNowTime[ 64 ];memset( cNowTime, 0, 64 );strftime( cNowTime, sizeof( cNowTime ), "%Y-%m-%d-%H-%M-%S", t );std::cout << t << std::endl;std::cout << t->tm_hour << std::endl;std::cout << t->tm_min << std::endl;std::cout << t->tm_sec << std::endl;

附录:

《c/c++ 获取时间戳》——精确到毫秒

timeb.h和time.h
这两个是C++的标准头文件,在Microsoft Visual Studio/VC98/Include中,表示了C++对时间的支持能力。

time.h中申明了tm结构体,来对时间年月日、时分秒的支持,值得注意的是,它不支持毫秒级的计时方式。
可以用函数time(NULL)函数获取当前时间戳。

timeb.h是对time.h的补充,申明了timeb结构体,用来支持毫秒级的计时方式。
可以用ftime(timeb&)获取当前时间戳。

两个头文件的都定义了typedef long time_t;

time_t和tm可以相互转换,然而C++并没有提供从time_t到tm的转换,可以调用ACE的转换函数ACE_OS::localtime_r (const time_t *t, struct tm *res)来实现。

timeb.time实际上就是time_t;timeb.millitm表示毫秒。
timeb.h获取毫秒的代码

#include <iostream>
#include <sys/timeb.h>
using namespace std;int main()
{timeb t;ftime(&t);//获取毫秒cout << t.time << "  " << t.millitm << endl;//秒级时间戳cout << t.time * 1000 + t.millitm << endl;//某个时间戳下走过的毫秒数,可用来求时间复杂度cout << t.time * 1000 + t.millitm << endl;//13位毫秒的时间戳
}

timeb是一个结构体,下面是源码

    struct timeb{time_t         time;unsigned short millitm;short          timezone;short          dstflag;};

在这里插入图片描述

例如:

	timeb tt;ftime(&tt);//获取毫秒std::cout << tt.time << "  " << tt.millitm << std::endl;//秒级时间戳std::cout << tt.time * 1000 + tt.millitm << std::endl;//某个时间戳下走过的毫秒数,可用来求时间复杂度std::cout << tt.time * 1000 + tt.millitm << std::endl;//13位毫秒的时间戳struct tm *t;           // tm结构指针t = localtime( &tt.time );  //获取当地日期和时间std::cout << t << std::endl;std::cout << t->tm_hour << std::endl;std::cout << t->tm_min << std::endl;std::cout << t->tm_sec << std::endl;char cNowTime[ 64 ];memset( cNowTime, 0, 64 );//strftime( cNowTime, sizeof( cNowTime ), "%Y%m%d%H%M%S", t );strftime( cNowTime, sizeof( cNowTime ), "%H%M%S", t );std::cout << cNowTime << std::endl;std::cout << atoi(cNowTime)* 1000 + tt.millitm << std::endl;std::string path = "/path/";path +=cNowTime;path +=".jpg";
/*
#include <cstdio>
#include <iostream>
#include <stdlib.h>
using namespace std;int main(int argc , char *argv[]){int n = 0; char str[110] = "1234";//char[]转int n = atoi(str);printf("%d\n", n);//int转char[]n = 567;itoa(n, str, 10);//10代表进制,可填2,8,10,16 printf("%s",str);	return 0;
}
结果:
1234
567
*/

http://www.ppmy.cn/news/527697.html

相关文章

什么软件可以测试电脑显示器坏点,怎么检测液晶显示器亮点、暗点、坏点

由于液晶显示器面板的生产缺陷问题&#xff0c;新购的液晶显示器屏幕上出现亮点、暗点、坏点是在所难免的&#xff0c;各大显示器面板厂商都避免不了这个问题&#xff0c;国家三包规定三个点内不能给与更换&#xff0c;那么我们购买显示器的时候怎么检测液晶显示器亮点、暗点、…

有没有什么测试显示屏优劣的 软件,如何测试显示器的好坏?

显示器的好坏对眼睛的影响很大&#xff0c;因此挑选一个质量好的显示器是一件不可忽视的事情。这里左岸找到两种方法供大家选择。 第一&#xff0c;最近网上很流行的一张图片测试法&#xff1a; 仔细观察下面这张图[更清晰的]&#xff0c;看看你能看到下面的第几行。 只能看第六…

2021-2027全球及中国平板显示器测试设备行业研究及十四五规划分析报告

2021-2027全球及中国平板显示器测试设备行业研究及十四五规划分析报告 本文同时着重分析平板显示器测试设备行业竞争格局&#xff0c;包括全球市场主要厂商竞争格局和中国本土市场主要厂商竞争格局&#xff0c;重点分析全球主要厂商平板显示器测试设备产能、产量、产值、价格和…

打字心得

现在基本上是已经可以盲打下来了&#xff0c;但是还是有一点生疏&#xff0c;还要多加练习打字速度。金山打字通是一个很好的打字软件&#xff0c;它通过对执法的基本要求&#xff0c;对键盘的详细介绍来加深你的记忆&#xff0c;同时通过多次联系来让你熟记。同时还有不少的游…

警察抓小偷打字游戏JAVA_打字游戏警察抓小偷_警察抓小偷打字游戏下载[2012]-下载之家...

警察抓小偷打字游戏是由金山推出的一款趣味打字练习游戏。在打字游戏警察抓小偷中&#xff0c;玩家可扮演警察或小偷&#xff0c;通过打对相应字母来追逐小偷或者躲避追捕。金山打字游戏警察抓小偷可以很好的锻炼你的打字速度&#xff0c;练习各位同学对键盘键位的感应&#xf…

打字小游戏(二)

/* 浏览器和标签都有默认的样式 清除默认样式 */ *{margin: 0;padding: 0 } /* 清除加粗标签的默认样式 */ b,strong{font-weight: normal } /* 清除倾斜标签的默认样式 */ i,em{font-style: normal } /* 清除默认下划线 */ a,u{text-decoration: none } /* 清除列表的默认符号…

抢滩登陆-秘籍

抢滩登陆2002下载链接: https://pan.baidu.com/s/1iFNUwQ0Yrr4L-e4lz2i9Og 提取码: f6mc 在游戏界面中按电脑键盘的数字键。 1 无敌&#xff0c;不受伤害&#xff0c;有防御力。 2 弹药无限&#xff0c;不用换弹夹。 电脑键盘的字母键。 g 手枪。子弹有限十二颗。 m 飞弹&…

金山打字通2008下载-金山打字通2008正式版-金山打字通2008完整版

金山打字通2008下载&#xff1a;金山打字通2008正式版集成金山打字通2008以及金山打字游戏2008两个版本于一身。主要由英文打字、拼音打字、五笔打字、打字游戏等六部分组成。所有练习用词汇和文章都分专业和通用两种&#xff0c;用户可根据需要进行选择。英文打字由键位记忆到…