现在无法使用python和opencv获取密钥代码

时间:2012-02-24 11:12:52

标签: python opencv keyboard-events keycode

好吧,在过去的几个月里,我一直在使用这个基本的东西来获取关键事件,如ESC键或E键等,在我的opencv程序中按下它们时做的事情。

现在,为了检测ESC密钥,代码已存在于samples文件夹和Web上的所有示例中。我明白。从那以后,我开始了一种方法来获取其他键的密钥代码,例如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无关的其他事情 为什么我按E时没有从前面的代码中获得101,或者当我按下它时按其他键的代码?

2 个答案:

答案 0 :(得分:1)

这曾经非常简单:

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

上面的代码不适用于您的系统?

答案 1 :(得分:0)


我和你有同样的问题,但我总是得不到keycode(只得到255) 我发现它是因为cv.WaitKey只从你创建的窗口接收密钥而不是python命令行:)