2017-10-05 16 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')'코드를 작성합니다. 그리고 '캡처 그림'을 입력하고 엔터 키를 누르면 그림이 캡처됩니다. –

답변

1

당신처럼 쓸 수

업데이트
reqCommand = 'Capture_pic' 
command = input('Enter command') 
if command == reqCommand: 
    out = cv2.imwrite('capture.jpg', frame) 

:

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