2017-10-05 92 views
0

python newbie这里我有下面的代码,我正在使用opencv捕获图片。当我按下键盘上的q键时,它捕获图片。 到目前为止工作得很好。如何在opencv中捕获图片

import cv2 


cap = cv2.VideoCapture(0) 

while(True): 
    ret, frame = cap.read() 
    rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) 

    cv2.imshow('frame', rgb) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     out = cv2.imwrite('capture.jpg', frame) 
     break 

cap.release() 
cv2.destroyAllWindows() 

我需要它来捕捉图片,当我给一个命令(如'现在捕获')。任何人都可以帮助我如何在用户发出书面命令而不是按下键时捕获帧。由于

+0

如何被用户会写命令不触摸一个键? –

+0

你是否想从终端发出'立即捕获'命令? – Akhilesh

+0

@Akhilesh是的!例如,我编写代码'command = input('Enter command')' 当我输入'Capture pic'并按下回车键时,它应该捕获图片。 –

回答

1

您可以编写

​​

更新:

此更新,使其能够以不阻止此程序的执行

import cv2 
import threading 

command = None 

def process(): 
    while True: 
     command = input('Enter command') 

thread = threading.Thread(target=process) 
thread.start() 

cap = cv2.VideoCapture(0) 
reqCommand = 'Capture_pic' 
while(True): 
    ret, frame = cap.read() 
    rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) 

    cv2.imshow('frame', rgb) 
    if command == reqCommand: 
     out = cv2.imwrite('capture.jpg', frame) 
     thread.terminate() 
     break 

cap.release() 
cv2.destroyAllWindows() 
+0

这是一个阻塞呼叫,它将停止读取和显示新的帧,直到用户输入命令。 – zindarod

+0

@Zindarod ...感谢通知,我已经相应地更改了代码。 – Akhilesh