4Manuals

  • PDF Cloud HOME

如何在按住键的同时暂停VideoStream? Python OpenCV Download

    获取Hough线的交点OpenCV C ++ 如何将文本边界框与pyplot.Rectangle对齐? 导入类问题 在Python数据框中选择列时出错 使用Rabbit的pika确认消息 TypeError:无法处理此数据类型 使用buildozer不会下载sdl2_image SMTPSenderRefused,421,超出超时 Tensorflow多线程推理比单线程推理慢 关于python中变量的困惑。 python如何使用变量?

我正在尝试为图像处理项目创建网络摄像头视频流,并且我想要一种暂停流的方法(因为它对于检查值,蒙版等非常有用) 我确实找到了一种使用time.sleep()暂停一定量的简单方法,但这并不是我真正想要的。

我真正想要的是一种在按SPACE时暂停流,并在释放时取消暂停的方法。 在我看来,按住键是最简单的选择,因为这仅意味着检查是否在帧的开始处按下了按钮,如果是,则跳过该特定帧。但是,我在这里尝试过的代码(使用继续跳过框架)不起作用。

有什么建议吗?

from imutils.video import VideoStream
import imutils
import time
import cv2

vs = VideoStream(src=0).start()

while True:
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"): break # quitting when q is pressed
    # if key == ord(" "): time.sleep(5)
    if key == ord(" "): continue

    frame = vs.read()
    frame = imutils.resize(frame, width=500)

    if frame is None:
        print("Oops, something went wrong")
        break

    # Image processing over here

    cv2.imshow("Frame", frame)  

vs.stop()
cv2.destroyAllWindows()

此外,如果有人对我的代码有其他提示或建议,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以将空格键用作开关,而不必连续按。按下一次停止,然后再次按下开始,依此类推。为此,只需使用一个标志变量,该标志变量每当按下空格键时都会更改值。我使用了这段代码,它起作用了:

import cv2
cap = cv2.VideoCapture(0)
flag = True
while(True):
    if cv2.waitKey(1) & 0xFF == ord(' '):
        flag = not(flag)
        print(flag)
        # Capture frame-by-frame
    if flag == True:
        ret, frame = cap.read()
        if frame is None:
            break
        # Display the resulting frame
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        continue

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()



Similar searches
    API网关不将路径参数转发到URI以进行VPC链接集成 为什么随机森林或决策树不能给出100%的精度?以及如何处理中间的巨大噪音? 如何将MongoDb Stitch连接到Android Studio Jenkins无法联系Sonarqube本地主机 如何直接连接至运动相机WI-FI并获取实时视频流?