我有一个机器学习项目,它正在为 linux 中的速度梦想游戏设计自主驱动程序。在这种情况下,我必须找到一种方法让键盘输出像这样实际的一维数组。
up - down - right - left - upleft - upright - downleft - downright - do nothing
[0 0 0 0 0 0 0 0 1]
我将此代码用作截屏和处理的起始代码:
import time
import cv2
import mss
import numpy as np
def process_img(original_img):
processed_img = cv2.cvtColor(original_img, cv2.COLOR_BGR2GRAY)
processed_img = cv2.Canny(processed_img, threshold1=200, threshold2=300)
return processed_img
with mss.mss() as sct:
# Part of the screen to capture
monitor = {"top": 0, "left": 70, "width": 640, "height": 480}
while True:
last_time = time.time()
# Get raw pixels from the screen, save it to a Numpy array
screen = np.array(sct.grab(monitor))
new_screen = process_img(original_img=screen)
# Display the picture
cv2.imshow("Window", new_screen)
print("Loop took {} seconds".format(time.time() - last_time))
# Press "q" to quit
k = cv2.waitKey(12)
if k > 0:
print(k)
if k & 0xFF == ord("q"):
cv2.destroyAllWindows()
break
我知道使用功能可以捕获键码cv2.waitkey()
。所以我可以想出一种方法来捕捉是否按下了向上 - 向下 - 向左或向右。但是有什么方法可以让我用 cv2.waitkey 捕捉像up-left
, up-right
, ... 这样的组合键。
在循环中捕捉按键cv2.waitkey
对我来说非常重要,因为它在准确度方面对我的神经网络的性能有很大的改进。