<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    鍵盤事件監聽

    概要

    本文講解了HighGUI里面的waitKey鍵盤事件監聽函數,最后提供了一個waitKey的Demo。

    keywords waitkey highgui 鍵盤事件監聽

    waitkey demo

    waitKey函數API講解

    接下來我們再講一下opencv中一個鍵盤事件監聽函數waitKey

    cv2.waitKey(delay_ms)
    

    這個函數其實有兩個功能。

    1. 等待一個按鍵事件的發生

    2. 延時delay_ms個毫秒

    它的邏輯是這樣的, 如果過了n個ms仍然也沒等到有按鍵事件發生, 就繼續執行下面的函數, 所以變相等于延時(delay)。

    注意 , 這個函數只有在當前至少有一個窗口是激活狀態下, 才會生效

    換句話說, 如果你在這期間, 點開了另外一個無關窗口, 無論你怎么按鍵都不會響應。

    如果等待設置為0, 就意味著永久等待, 直到有任意一個按鍵按下。

    cv2.waitKey(0)
    

    waitKey 返回的數值 是按下的按鍵字符,對應的ASCII編碼。

    key_num = cv2.waitKey(0)
    

    如果是等待有限時間例如,

    key_num = cv2.waitKey(1000)
    

    如果等待1000ms 也就是1s之后, 沒有按鍵按下, 那么返回的這個值就是-1

    我們在進行按鍵字符匹配的時候, 一般不會直接比對字符數值。

    你可以使用python的強制類型轉換, 將數值轉換為字符串chr(value)

    例如我們判斷, 按鍵是否是k鍵的時候, 判斷可以這么寫:

    key_num = cv2.waitKey(0)
    
    if chr(key_num) == 'k':
      print("k pressed...")
    

    或者,你可以這么寫

    我們利用函數ord(char), 可以將字符,轉換為對應ASCII編碼的數值。

    key_num = cv2.waitKey(0)
    
    if key_num == ord('k'):
      print("k pressed...")
    

    綜合例程

    waitkey demo

    waitkey_demo.py

    import cv2
    
    # 創建一個窗口
    cv2.namedWindow('image')
    
    
    while True:
        # 等待按鍵事件發生
        key_code = cv2.waitKey(1000)
    
        if key_code != -1:
            print('key {} pressed!!! value={}'.format(chr(key_code), key_code))
            if chr(key_code) == 'q':
                # 退出程序
                print('Quit')
                break
        else:
            # 沒有按鍵按下
            print('no key pressed , wait 1s')
    
    cv2.destroyWindow('image')
    


    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人