сейчас не могу получить код ключа, используя python и opencv

хорошо, я использовал эту базовую вещь в течение последних нескольких месяцев, чтобы получать ключевые события, такие как клавиша ESC или клавиша E и т. д., чтобы делать что-то, когда они нажимаются в моей программе opencv.

Раньше, для обнаружения клавиши ESC, код уже был во всех примерах в папке с примерами и в Интернете. Я понял это. Из этого я придумал способ получить коды клавиш для других клавиш, таких как E и S и т. Д. Потому что я хотел использовать их для создания снимков текущих кадров, обрабатываемых в моей программе. И это сработало, я обнаружил, что для E это 101, а для ESC — 27. Но это значение ASCII или что-то в этом роде? Я не уверен.

Это то, что я делаю сейчас, но просто не печатаю код ключа:

import cv

while True:

   k = cv.WaitKey(100) % 0x100

   if k != 255:
        print k

Так что, когда я нажимаю какую-либо клавишу, которая не имеет значения 255, я должен быть уведомлен о том, что эта клавиша была нажата. Он работает в моих программах opencv:

while True:



  k = cv.WaitKey(10)

  if k % 0x100 == 27: # if ESC key is pressed....

    #cv.SaveImage(filename,threshed2)
    cv.DestroyWindow("threshed") #Destroy the window of detection results
    cv.DestroyWindow("gray")
    cv.DestroyWindow("edge")
    cv.DestroyWindow("pupil")
    #cv.DestroyWindow('smooth')
    break

  elif k == 101: #if E is pressed
        eyeSnap = "C:\\Users\\ronnieaka\\Desktop\\PROJ\\openCV\\eyeSnaps\\det_pupil.jpg"
        cv.SaveImage(eyeSnap,image)

Я знаю, что это основная вещь, и я просто играл, чтобы нажимать клавиши и делать что-то еще, не связанное с OpenCV. Почему я не получаю 101 из предыдущего кода, когда я нажимаю E, или код для других клавиш, когда я нажимаю их?


person bad_keypoints    schedule 24.02.2012    source источник


Ответы (2)


Раньше это было очень просто:

k = cv.WaitKey(10)
if k == 27:         
    # ESC key was pressed

Приведенный выше код не работает в вашей системе?

person karlphillip    schedule 24.02.2012
comment
Я хочу иметь возможность получить номер клавиши, которую я нажимаю. Например, для ESC это 27, для E это 101, я хочу знать, что для других клавиш. Я сделал это несколько недель назад, это было очень просто, как вы говорите, и как я сказал в своем основном вопросе, но сейчас это не работает! Я имею в виду, что этот код работает (как я уже сказал, второй листинг кода, который я дал, работает), но не первый. - person bad_keypoints; 25.02.2012
comment
хорошо, когда я помещаю else: print k в свою программу, она выводит значения для каждой клавиши, скажем, 114 и т. д. Но не тогда, когда я просто запускаю это: import cv while True: k = cv.WaitKey(10) if k == 27: break else: print k - person bad_keypoints; 25.02.2012


У меня та же проблема, что и у вас, но я всегда не мог получить код ключа (только получить 255)
Я нахожу это, потому что cv.WaitKey получает ключ только из окон, которые вы создаете, а не из командной строки python :)

person Evan Lin    schedule 28.04.2014