技巧 | OpenCV程序执行时间计算
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
01
引言
大家用OpenCV做开发,经常需要调试算法,打印出算法的执行时间,OpenCV中没有直接获取时间戳的函数,但是有两个根据CPU时钟可以精准计算算法每个步骤执行时间的函数,通过它们可以计算一行或者多行代码的执行时间,视频处理的FPS等性能指标。
计算执行时间
cv.getTickCount,
返回CPU执行的时间周期数,
cv.getTickFrequency
每秒CPU时间周期总数
计算一段算法处理执行的时间秒数,代码结构如下:
e1 = cv.getTickCount()
# your code execution
e2 = cv.getTickCount()
time = (e2 - e1)/ cv.getTickFrequency()
time是以秒位单位。
计算秒/毫秒/FPS
在算法执行阶段,有三个经常使用的速度性能计量指标分别是秒、毫秒、FPS(每秒多少帧),根据上面的cv.getTickCount与cv.getTickFrequency两个函数,这三个指标的计算代码如下:
e1 = cv.getTickCount()
# your code execution
e2 = cv.getTickCount()
## 计算秒
time = (e2 - e1)/ cv.getTickFrequency()## 计算毫秒
mt =((e2 - e1)/ cv.getTickFrequency())*1000## 计算FPS
fps = cv.getTickFrequency() / (e2 - e1)
网络模型推理执行时间计算
OpenCV中还提供了网络模型推理执行时间得计算函数,完成一次深度学习模型推理的时间,可以从模型的getPerfProfile函数中获取,转换为毫秒数,相关的计算代码如下:
# Put efficiency information.
t, _ = net.getPerfProfile()
label = 'Inference time: %.2f ms' % (t * 1000.0 / cv.getTickFrequency())
人脸检测模型与代码执行时间计算
下面的代码演示了实时视频人脸检测模型推理时间毫秒数与计算执行时间FPS
# 人脸检测
while True:e1 = cv.getTickCount()ret, frame = capture.read()if ret is not True:breakh, w, c = frame.shapeblobImage = cv.dnn.blobFromImage(frame, 1.0, (300, 300), (104.0, 177.0, 123.0), False, False);net.setInput(blobImage)cvOut = net.forward()# Put efficiency information.t, _ = net.getPerfProfile()label = 'Inference time: %.2f ms' % (t * 1000.0 / cv.getTickFrequency())# 绘制检测矩形for detection in cvOut[0,0,:,:]:score = float(detection[2])objIndex = int(detection[1])if score > 0.5:left = detection[3]*wtop = detection[4]*hright = detection[5]*wbottom = detection[6]*h# 绘制cv.rectangle(frame, (int(left), int(top)), (int(right), int(bottom)), (255, 0, 0), thickness=2)cv.putText(frame, "score:%.2f"%score, (int(left), int(top)), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1)e2 = cv.getTickCount()fps = cv.getTickFrequency() / (e2 - e1)cv.putText(frame, label + (" FPS: %.2f"%fps), (10, 50), cv.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 2)cv.imshow('face-detection-demo', frame)cv.waitKey(1)
此外,OpenCV还有两个函数可以决定程序执行时间,默认情况下OpenCV会自动编译优化代码,检测是否启用自动化,它们分别是:
cv.useOptimized() ## 检查是否使用优化
cv.setUseOptimized() ### 设置优化
默认情况下,OpenCV都是自动启动优化,根据CPU支持不同,可以启动SSE/AVX等底层指令集优化!
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
技巧 | OpenCV程序执行时间计算相关推荐
- Python之程序执行时间计算
import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.now() ...
- 怎么计算python程序执行时间_【华为云技术分享】计算python程序执行时间
写代码的时候,我们可能想知道python的执行效率如何,有如下几种方法可以计算python程序执行时间. 1.方法1 import datetime starttime = datetime.date ...
- 【华为云技术分享】计算python程序执行时间
写代码的时候,我们可能想知道python的执行效率如何,有如下几种方法可以计算python程序执行时间. 1.方法1 import datetimestarttime = datetime.datet ...
- python获取耗时的shell_python获取耗时的shell_关于Linux:在shell中获取程序执行时间...
我想在Linux shell中在几个不同的条件下执行一些东西,并且能够输出每次执行的执行时间. 我知道我可以编写一个Perl或python脚本来完成这个任务,但是有没有一种方法可以在shell中完成呢 ...
- OpenCV程序效率优化方法1
OpenCV程序效率优化方法 使用指针方法遍历像素点 OpenCV中图像的存储对象为Mat类,该类提供了多种方式访问像素的的值.一般来说分为以at方法类与ptr指针的方式访问,相较之下使用指针ptr的 ...
- python程序执行时间_用于在Python中查找程序执行时间的程序
python程序执行时间 The execution time of a program is defined as the time spent by the system to execute t ...
- 【OpenCV】Linux 下用 g++ 编译 OpenCV 程序
编译命令: g++ gaussianBlur.cpp -o test `pkg-config --cflags --libs opencv` 执行编译生成的可执行文件: ./test gaussian ...
- php运行时间microtime,php记录程序执行时间microtime
/** * 记录程序程序时间---只能记录连续的调用改函数 * @param$time_key记录的key,多次执行可以指定同一个key * @returnnone没有返回值,直接获取全局变量$tim ...
- 详解为什么OpenCV的直方图计算函数calcHist()计算出的灰度值为255的像素个数为0
在使用OpenCV的直方图计算函数calcHist()时,发现灰度值为255的像素个数总是为0. 哪怕图像中灰度值为255的像素个数不为0,使用OpenCV的直方图计算函数calcHist()计算出的 ...
最新文章
- 「AI科技」机器学习算法之K-means算法原理及缺点改进思路
- 成功解决AttributeError: 'NoneType' object has no attribute '__array_interface__'
- TLS调试检测和反调试
- 爬虫、框架scrapy
- Laravel 学习笔记之 Query Builder 源码解析(下)
- idea命令行运行多个客户端_推荐一款神仙颜值的 Redis 客户端工具,开源啦
- python开源考试_可能是 Python 中最火的第三方开源测试框架 pytest
- AI 人工智能学习经典书单
- git查看之前的提交日志
- 第一章信息安全基础考试要点及真题分布
- html怎么更改手势手型,弹钢琴时纠正手型手势的正确方法
- l2-029 特立独行的幸福 (25分)_霜降后盆栽幸福树,调整4个地方,不用再怕掉叶子了...
- 从技术到求职,强烈推荐一下这9个牛逼的公众号
- 热烈庆祝《大数据》成功入选中国科技核心期刊目录~
- (w10)Prtsc截图键无法正常使用——解决办法
- R如何导入带有分隔符号的文件
- java简历 star_写简历时的STAR法则
- powerbi 线性回归_精选 | 实用炫酷的Power BI自定义图表
- 收藏一些非常不错的学习资源
- OpenCV3的GPU模块编译
热门文章
- AI和大数据如何落地智能城市?京东城市这6篇论文必读 | KDD 2019
- CVPR 2019 | 惊艳的SiamMask:开源快速同时进行目标跟踪与分割算法
- Linux 之父归来!
- AI 一分钟 | 特斯拉科技创新中心落户北京;麻省理工开发透视技术
- 都是套路!要毁灭人类、喷马斯克、还获得公民身份的机器人Sophia,真相确是...
- 你真的会写二分检索吗?
- 导师:CV学的这么差,你别毕业了
- 为了一个科研idea,博士生们连冥想、巫毒仪式都用上了
- Hinton再挖新坑:改进胶囊网络,融合Transformer神经场等研究
- 深度学习环境配置指南:Pytorch、TensorFlow、Keras