2016-05-28 14 views
2

Ich arbeite mit OpenCV und ich mag OpenCV auf nicht Warten auf jedes Taste gedrückt wird (Standardverhalten von cv2.waitKey()), aber für bestimmte Tasten warten, die ich definiere (und nachfolgende Aktionen ausführen).OpenCV: warten auf verschiedene Schlüssel?

für dieses Problem Meine aktuelle Lösung ist die folgende rekursive ein:

def opencv_wait(): 
    # wait for keypress; capture it 
    k = cv2.waitKey(0) 

    if k == 27: # this should be ESC 
     return # e.g. end the program 
    elif k == some_key:  # some other keys... 
     do_some_function() # ...and actions to do after key is pressed 
    else: 
     opencv_wait()  # recursively call opencv_wait() for looping 

Meine Frage ist: Diese Lösung ist eine bequeme Möglichkeit, OpenCV für verschiedene Schlüssel warten zu lassen?

Gibt es einen schnelleren/besseren Weg, um das zu erreichen, was ich tun möchte?

Grundsätzlich möchte ich OpenCV warten (mit so wenig Ressourcen wie möglich verschwendet) unendlich lange, bis bestimmte Tasten gedrückt werden, die nachfolgende Aktionen auslösen sollen.

+1

Ich war dafür zu suchen. Leider glaube ich nicht, dass es einen besseren Weg gibt, auf einen bestimmten Schlüssel zu warten. –

Antwort

0

Wenn es nicht notwendig ist, Sie nicht-rekursive Ansatz versuchen könnte:

def is_pressed(key) 
    # if statement 

def opencv_wait(): 
    key = 0 

    while is_pressed(key) : 
     key = cv2.waitKey(0)