pythonopencv

Using other keys for the waitKey() function of opencv


I'm working on a program (python ,opencv) in which I use the spacebar to go to the next frame, and Esc to exit the program. These are the only two keys i've got working. I tried to find out about more keys , tried various codes for them but didnt work. especially arrow keys.

I found this about waitkey, but it doesn't work.

So my question is, How do I catch other keys besides esc and spacebar to trigger certain functions in my python-opencv program?


Solution

  • You can use ord() function in Python for that.

    For example, if you want to trigger 'a' key press, do as follows :

    if cv2.waitKey(33) == ord('a'):
       print "pressed a"
    

    See a sample code here: Drawing Histogram

    UPDATE :

    To find the key value for any key is to print the key value using a simple script as follows :

    import cv2
    img = cv2.imread('sof.jpg') # load a dummy image
    while(1):
        cv2.imshow('img',img)
        k = cv2.waitKey(33)
        if k==27:    # Esc key to stop
            break
        elif k==-1:  # normally -1 returned,so don't print it
            continue
        else:
            print k # else print its value
    

    With this code, I got following values :

    Upkey : 2490368
    DownKey : 2621440
    LeftKey : 2424832
    RightKey: 2555904
    Space : 32
    Delete : 3014656
    ...... # Continue yourself :)