我創建了一個虛擬鍵盤,它從網路攝像頭手勢中獲取輸入,作為玩視頻游戲的一種新穎方式。我已經得到了幾乎所有的作業,但是在當前的實作中,我使用 time.sleep() 來區分按住鍵和單鍵,它會暫停視頻攝像頭饋送。我曾簡要研究過多執行緒,但不確定在這種情況下我將如何實作它(另外,當我在網路攝像頭模塊中嘗試多執行緒時,它絕對會降低我的網路攝像頭 fps ???)所以我想知道是否有在滿足條件后將 if 陳述句阻塞一小段時間的方法。這是代碼片段,對不起,如果我的代碼是垃圾。
# Center screen
if screen_pos_left[4] or screen_pos_right[4]:
# Camera Reset - Single
if hand_sign_left == "One Finger" or hand_sign_right == "One Finger":
kb.press_and_release('u')
time.sleep(1.0)
# Move Forward - Held
if hand_sign_left == "Two Fingers" or hand_sign_right == "Two Fingers":
kb.press_and_release('w')
time.sleep(0.1)
# Move Backwards - Held
if hand_sign_left == "Three Fingers" or hand_sign_right == "Three Fingers":
kb.press_and_release('s')
time.sleep(0.1)
# Dodge - Single
if hand_sign_left == "Four Fingers" or hand_sign_right == "Four Fingers":
kb.press_and_release('space')
time.sleep(0.5)
uj5u.com熱心網友回復:
也許這就是你要找的東西?
import asyncio
# Center screen
if screen_pos_left[4] or screen_pos_right[4]:
# Camera Reset - Single
if hand_sign_left == "One Finger" or hand_sign_right == "One Finger":
kb.press_and_release('u')
await asyncio.sleep(1.0)
# Move Forward - Held
if hand_sign_left == "Two Fingers" or hand_sign_right == "Two Fingers":
kb.press_and_release('w')
await asyncio.sleep(0.1)
# Move Backwards - Held
if hand_sign_left == "Three Fingers" or hand_sign_right == "Three Fingers":
kb.press_and_release('s')
await asyncio.sleep(0.1)
# Dodge - Single
if hand_sign_left == "Four Fingers" or hand_sign_right == "Four Fingers":
kb.press_and_release('space')
await asyncio.sleep(0.5)
基于這個答案await asyncio.sleep(),和之間的區別在于time.sleep()凍結time.sleep()整個腳本而await asyncio.sleep()沒有。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/463107.html
