二、详解
2.1 pynput监听键盘
import pynput.keyboard as keyboard
# 监听键盘
def listen_keybord():
listener = keyboard.Listener(on_press=onPressed, on_release=onRelease)
listener.start()
1
2
3
4
5
6
pynput的监听为异步事件,但是会被阻塞,所以如果事件处理事件过长,得用异步处理。
2.2 监听事件
创建了c_equipment类来封装武器信息。
重点在tab键的监听,使用异步来检测装备信息。
def onRelease(key):
try:
if '1' == key.char:
c_equipment.switch = 1 #主武器1
elif '2' == key.char:
c_equipment.switch = 2 #主武器2
elif '3' == key.char:
c_equipment.switch = 3 #手q switch=3的时候不压q
elif '4' == key.char:
c_equipment.switch = 3 #刀具
elif '5' == key.char:
c_equipment.switch = 3 #手雷
except AttributeError:
if 'tab' == key.name: #tab键异步操作检测
asyncHandle()
elif 'num_lock' == key.name: #小键盘锁用来控制程序开关
changeOpen()
elif 'shift' == key.name:
c_contants.hold = False
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2.3 pyautogui截屏
检测装备,首先要在打开装备栏的时候,截屏。
pyautogui.screenshot(region=[x, y, w, h])
x,y分别表示坐标,w,h表示宽度和高度。
截取之后,为了方便对比图片,需要将图片二值化,然后保存到本地。
完整代码如下:
import pyautogui
def adaptive_binarization(img):
#自适应二值化
maxval = 255
blockSize = 3
C = 5
img2 = cv2.adaptiveThreshold(img, maxval, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize, C)
return img2
# 屏幕截图
def shotCut(x, y, w, h):
im = pyautogui.screenshot(region=[x, y, w, h])
screen = cv2.cvtColor(numpy.asarray(im), cv2.COLOR_BGR2GRAY)
temp = adaptive_binarization(screen)
return temp
def saveScreen():
screen1 = shotCut(1780, 125, 614, 570)
cv2.imwrite("./resource/shotcut/screen.bmp", screen1)
————————————————
版权声明:本文为CSDN博主「七号公园的忧伤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LookOutThe/article/details/130639025