python-3.x - 如何在Python中动态更新cv2窗口标题的FPS

标签 python-3.x opencv

我正在使用python opencv来做一些视频相关的工作。我还在计算 FPS 并将其显示在 cv2 窗口的左上角。现在,我不想将其显示在左上角,而是将其显示在窗口标题上。下面是代码:

import cv2
import datetime
import imutils

def GetCoord(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        print("X: {} | Y: {}".format(x, y))

winName = "My Project"
cv2.namedWindow(winName)
cv2.setMouseCallback(winName, GetCoord)

cap = cv2.VideoCapture(0)
fps_start_time = datetime.datetime.now()
fps = 0
total_frames = 0

while True:
    ret, frame = cap.read()
    frame = imutils.resize(frame, width=800)
    total_frames = total_frames + 1
    fps_end_time = datetime.datetime.now()
    time_diff = fps_end_time - fps_start_time
    if time_diff.seconds == 0:
        fps = 0.0
    else:
        fps = (total_frames / time_diff.seconds)
    fps_text = "FPS: {:.2f}".format(fps)
    cv2.putText(frame, fps_text, (5, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1)
    cv2.imshow(winName, frame)
    key = cv2.waitKey(1)
    if key == ord('q'):
        break

cv2.destroyAllWindows()

我不想将其显示在左上角,而是想做如下操作:

cv2.imshow(winName + " FPS: {}".format(fps_text), frame)

但是这样做,应用程序的表现非常奇怪,并且不断打开一个新窗口。有没有办法实现这个目标?

最佳答案

问题的原因:

opencv 中的每个窗口都有一个唯一的名称。当您调用 cv2.namedWindow 时,或者当您使用新名称调用 cv2.imshow 时,都会使用此名称创建窗口。
通过使用:

cv2.imshow(winName + " FPS: {}".format(fps_text), frame)

每次 fps_text 与之前的不同时,您实际上都会创建新窗口

解决方案:

每个 opencv 窗口还有一个 title 属性。默认情况下,窗口标题是窗口唯一名称,但这是两个不同的属性。

您可以使用cv2.setWindowTitle修改标题:

fps_text = "{:.2f}".format(fps)
winTitle = winName + " FPS: {}".format(fps_text)
cv2.setWindowTitle(winName, winTitle)

请注意窗口唯一名称不会更改。

关于python-3.x - 如何在Python中动态更新cv2窗口标题的FPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73687426/

相关文章:

python - 无法正确导入聊天机器人及其语料库

python - 如何将 settings.py 文件中的常量导入到 Django 控制台中?

c++ - 在opencv中裁剪旋转图像

image - 处理滤镜和颜色

c# - 如何在EMGUCV中使用Facemarker?

networking - 如何使用功能 “send”(Winsock)在带有OpenCV的VS10中流式传输视频?

python - 在Python 3和Python 2中处理CSV中的非UTF8字符

python - Python 中的 is 运算符

python - 使用 imshow() 时图像未显示在 Google Colab 中

python - 我可以在 Tkinter 应用程序上获取 Youtube 缩略图吗