超链接:深度学习工作常用方法汇总,矩阵维度变化、图片、视频等操作,包含(torch、numpy、opencv等)

——————————————————————————————————————————

看视频进行代码讲解,更容易理解。https://www.bilibili.com/video/BV1HS4y1i7Wh/

import datetime
import os
from tkinter import *
from timeit import time
import cv2
import numpy as np
import yolo_utilimport warnings
from tools.parser import get_configwarnings.filterwarnings("ignore", category=DeprecationWarning)def main_fps():'''此方式计算的是程序处理这一帧,所用的时间当处理实时流时,假如实时流为 25帧/s, 也就是两帧之间的间隔为: 1 / 25 = 0.04s当你的处理一帧的速度很快的时候(快于 0.04s),那么你会发现,你每秒处理的帧数是大于原视频的 25帧假设处理速度为: 0.02s,那么你的处理速度fps = 1 / 0.02 = 50'''os.environ["CUDA_VISIBLE_DEVICES"] = '0'video_capture = cv2.VideoCapture("D:/project/video_reframe/data/video/test.mp4")fps = 0.0while True:t1 = time.time()# 每帧读取ret, frame = video_capture.read()if ret != True:break# yolov5,进行预测,替换成自己的处理程序bbox, classes, results_xml = yolo_util.predict(frame)# 此处的画框操作,也是非常耗时的,尤其是图片越大,耗时越多(可以试试4K,耗时超乎你的想象),# 在进行fps测试时,最好将此处注释掉,直接print输出fps# 不要画在图片上,直接看for box, cla in zip(bbox, classes):cv2.rectangle(frame, (box[0][0], box[0][1]), (box[1][0], box[1][1]), (0, 0, 255), 3)cv2.putText(frame, str(cla), (box[0][0], box[0][1] - 20), 0, 5e-3 * 150, (0, 0, 255), 2)cv2.putText(frame, "FPS: %.1f" % (fps), (int(20), int(40)), 0, 5e-3 * 200, (0, 255, 0), 3)image = cv2.resize(frame, None, fx=0.6, fy=0.6)cv2.imshow('YOLO5', image)fps = int(1 / (time.time() - t1))# 在进行fps测试时, 此处cv2.waitKey(1),一定写成1,# 0:代表无限等待,等到键盘输入# 1000:代表等待1000ms,也就是如果输入1000的话,相当于sleep 了 1skey = cv2.waitKey(1) & 0xFFif key == 27:breakdef main_fps_perfect():os.environ["CUDA_VISIBLE_DEVICES"] = '0'video_capture = cv2.VideoCapture("D:/project/video_reframe/data/video/test.mp4")f_count = 0t1 = time.time()while True:# 50 可以修改,最好是改成跟原视频流一样的帧数if f_count > 50:t1 = time.time()f_count = 0# 每帧读取ret, frame = video_capture.read()f_count += 1if ret != True:break# yolov5,进行预测,替换成自己的处理程序bbox, classes, results_xml = yolo_util.predict(frame)# 此处的画框操作,也是非常耗时的,尤其是图片越大,耗时越多(可以试试4K,耗时超乎你的想象),# 在进行fps测试时,最好将此处注释掉,直接print输出fps# 不要画在图片上,直接看for box, cla in zip(bbox, classes):cv2.rectangle(frame, (box[0][0], box[0][1]), (box[1][0], box[1][1]), (0, 0, 255), 3)cv2.putText(frame, str(cla), (box[0][0], box[0][1] - 20), 0, 5e-3 * 150, (0, 0, 255), 2)fps = int(f_count / (time.time() - t1))cv2.putText(frame, "FPS: %.1f" % (fps), (int(20), int(40)), 0, 5e-3 * 200, (0, 255, 0), 3)image = cv2.resize(frame, None, fx=0.6, fy=0.6)cv2.imshow('YOLO5', image)key = cv2.waitKey(1) & 0xFFif key == 27:breakif __name__ == '__main__':os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'# 有弊端的方式# main_fps()# 比较完美的方式main_fps_perfect()

python 计算fps,两种方式优缺点总结相关推荐

  1. 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用

    阅读目录 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5.变量(♥♥ ...

  2. 运行python程序的两种方式交互式和文件式_Python基础知识2

    运行Python程序的两种方式 小白学习,如有错误欢迎指点 一.每位小白写的第一个Python程序 1.运行Python程序的两种方式 1.1 交互式模式(即时对话) 打开cmd,打开Python解释 ...

  3. 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式

    交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...

  4. 运行python程序的两种方式交互式和文件式_教你如何编写、保存与运行 Python 程序...

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  5. 周一02.3运行python程序的两种方式

    一.运行python程序的两种方式 方法一:交互式:                      优点:输入一行代码立刻返回结果                       缺点:无法永久保存代码 方法 ...

  6. python 发送邮件的两种方式【终极篇】

    python 发送邮件的两种方式[终极篇] 一,利用python自带的库 smtplib简单高效 from email.mime.multipart import MIMEMultipart from ...

  7. python有两个运行程序分别是什么_运行python程序的两种方式

    [单选题]I wonder why ________ are so interested in action movies. [单选题]项目经理的职责不包括以下哪项内容 ? [简答题]结合项目的特点和 ...

  8. python打开方式包括_运行Python程序有两种方式:________和________。

    运行Python程序有两种方式:________和________. 答: 交互式 文件式 自觉的人,心目中有一张蓝图,人生理想.但是不知道世界的游戏规则 答:× 山水画的鉴赏方法? 答:1.首先看风 ...

  9. python程序执行的两种方式_012.执行Python程序的两种方式

    一.执行Python程序的两种方式 1.1 交互式 在终端内输入python3,然后输入python代码 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉 ...

  10. Python字符串的两种方式——百分号方式,format的方式

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

最新文章

  1. jquery中如何以逗号分割字符串_百度知道
  2. 支持向量机背后的数学原理!
  3. Vue.js之组件及其易错点
  4. vscode怎么自动将px转换成vw_基于react/vue移动端适配之px自动转rem、vw
  5. 【CodeForces - 471B】MUH and Important Things (模拟,细节)
  6. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(静默创建实例_08)
  7. 2021-2025年中国超细氢氧化铝行业市场供需与战略研究报告
  8. 图卷积网络进行骨骼识别代码_深兰科学院:动作识别——人体骨架时空图卷积网络的关节图构造方法简介...
  9. 图片上传功能(EasyUI前台框架+SSM框架)
  10. python hasattr内建函数测试
  11. 概率图模型(PGM)学习笔记(三)模式推断与概率图流
  12. haneWIN NFS服务器端 V1.1.69 汉化版
  13. mflac格式解密_mflac格式是什么意思
  14. mac 技术篇-修改hosts文件,hosts文件位置
  15. Python 解多元高次方程
  16. PKI、X509、PKCS及证书相关等
  17. 如何建立个人的免费网站
  18. 分布式CAP精彩故事
  19. liquibase的changelog详解
  20. HTML按钮样式,CSS精美按钮

热门文章

  1. 阿里云Centos7中GitLab使用smtp 163邮箱发送邮件的注意事宜
  2. tcga数据下载_从GDC下载最新的TCGA临床数据
  3. 节点nodeType、parentNode、children。下拉菜单。
  4. java实习生入职第一天,你该干点什么???
  5. EXCEL 在复杂查询时摒弃vlookup() sumif() 等公式,而使用数据透视表的初步学习
  6. 中国联通:正筹划推进开展与混改相关事项
  7. java中将txt转换为数组_关于android:在Java中将列表转换为数组
  8. 你不复盘,盘就复你,如何高效复盘
  9. 也谈PBFT/Tendermint/HotStuff中的活性问题、响应度问题和锁定问题
  10. 单片机开发教程3——串口发送MPU6050姿态角