2017-10-05 5 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')というコードを書いています。 「キャプチャピクチャ」と入力してEnterキーを押すと、ピクチャがキャプチャされます。 –

答えて

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

関連する問題