2017-10-05 91 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