OpenCV网络摄像头捕获

时间:2015-06-03 22:37:27

标签: python opencv

我担心我遇到了一些超出我新手能力范围的事情。问题的快速摘要:我试图在使用OpenCV python模块从网络摄像头进行实验(使用OpenSesame)捕获实时视频流。我可以让它工作,但我的问题是代码弹出一个新窗口,以显示它正在录制的实时流。如何更改此代码以不显示实时窗口,但仍然可以按' q'关闭直播流?

import numpy as np
import cv2

subject = str(self.get('subject_nr'))
cap = cv2.VideoCapture(0)
w=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH ))
h=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT ))

#Define the codec and create VideoWriter object
#fourcc = cv2.VideoWriter_fourcc(*'DIVX')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('path\to\output'+ subject + '.avi', -1, 20.0, (w,h))

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:

        out.write(frame)

        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

#Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:0)

cv2.waitKey()捕获来自highgui窗口的击键。如果您从不显示窗口,则无法使用waitKey捕获击键。您将需要能够捕获终端击键的东西。

对于linux,您可以使用termiosfcntl模块实现此目的。以下是Python文档中的一个示例。 https://docs.python.org/2/faq/library.html#how-do-i-get-a-single-keypress-at-a-time