python OpenCV实时显示帧率到窗口
时间: 2024-10-13 15:04:49 浏览: 102
在Python中使用OpenCV实时显示帧率到窗口,通常涉及到监控摄像头、处理帧、测量时间和计算帧率等步骤。以下是一个简单的示例:
```python
import cv2
import time
def show_framerate(frame):
cap = cv2.VideoCapture(0) # 使用默认摄像头
previous_time = time.time() # 上一帧的时间记录
frame_count = 0 # 每秒帧数计数
font = cv2.FONT_HERSHEY_SIMPLEX # 字体设置
fps = 0 # 初始帧率
while True:
ret, frame = cap.read() # 读取帧,ret表示是否成功,frame为图像矩阵
if not ret:
print("Error reading frame!")
break
# 图像处理(例如灰度转换、滤波等)
processed_frame = ...
# 计算当前帧的时间
current_time = time.time()
time_difference = current_time - previous_time # 去除非常微小的误差
# 只有当时间超过一秒时才计算帧率
if time_difference > 1:
frame_rate = frame_count / time_difference # 计算帧率
frame_count = 0 # 重置帧数计数
fps = round(frame_rate, 2) # 四舍五入到小数点后两位
text = f"FPS: {fps}"
# 在图像上绘制帧率信息
cv2.putText(processed_frame, text, (10, 30), font, 0.7, (0, 255, 0), 2)
# 显示帧
cv2.imshow('Video with FPS', processed_frame)
# 更新时间记录
previous_time = current_time
# 等待用户按键(按 'q' 键退出)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release() # 释放摄像头资源
cv2.destroyAllWindows() # 关闭所有窗口
# 开始实时显示帧率
show_framerate()
```
在这个示例中,程序持续读取摄像头帧,并在每个循环中检查已过去的时间,以此来计算每秒钟的帧数。将结果作为文字添加到显示的图像上。
阅读全文