首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python CV2在按键上响应时间较慢

Python CV2在按键上响应时间较慢
EN

Stack Overflow用户
提问于 2019-02-07 18:14:19
回答 1查看 386关注 0票数 2

我一直在编写一个视频播放器,以测试我是否可以在Python中播放和暂停视频。我的问题是,每当我按下一个键时,它都没有反应,需要连续按键才能工作,效果是随机的。

如果有人知道这可能是什么原因,那将是非常有帮助的。

代码语言:javascript
复制
import cv2

cap = cv2.VideoCapture('testvideo.mp4')

length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

isPlaying = False


def onchange(trackbar_value):
    cap.set(cv2.CAP_PROP_POS_FRAMES, trackbar_value)
    err, vid = cap.read()
    cv2.imshow('player', vid)
    pass


start = 0

cv2.namedWindow('player')
cv2.createTrackbar('test', 'player', start, length, onchange)

onchange(1)

while cap.isOpened():
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    elif cv2.waitKey(1) & 0xFF == ord('p'):
        isPlaying = not isPlaying

    ret, player = cap.read()

    if cv2.waitKey(20) == 27:
        break
    if isPlaying:
        cv2.imshow('test', 'frame')

    elif cap.get(cv2.CAP_PROP_POS_FRAMES) >= length:
        break

cap.release()
cv2.destroyAllWindows()
EN

回答 1

Stack Overflow用户

发布于 2019-02-08 16:32:35

我通过修改while cap.isOpened()循环中的这一部分修复了这个问题:

代码语言:javascript
复制
keyPress = cv2.waitKey(20)
ret, player = cap.read()
if keyPress & 0xFF == ord('q'):
    break
elif keyPress & 0xFF == ord('p'):
    isPlaying = not isPlaying

一旦我删除了

代码语言:javascript
复制
if cv2.waitKey(20) == 27:
    break

line,它也比以前工作得更好。

所有这些都加快了项目的速度,现在一切都很正常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54570968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档