-
Notifications
You must be signed in to change notification settings - Fork 403
/
筛选事件特征图片.py
187 lines (152 loc) · 4.69 KB
/
筛选事件特征图片.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
import os
# device = torch.device("cuda:0" if (torch.cuda.is_available()) else "cpu")
# print(device)
import json
import cv2
import numpy as np
import time
from PIL import Image, ImageDraw, ImageFont
import shutil
from pynput.keyboard import Controller, Key, Listener
from pynput import keyboard
import threading
态='暂停'
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(img)
# 字体的格式
fontStyle = ImageFont.truetype(
'C:/Windows/Fonts/STHUPO.TTF', textSize, encoding="utf-8")
#"D:/python/辅助/锐字真言体.ttf"
# 绘制文本
draw.text((left, top), text, textColor, font=fontStyle)
# 转换回OpenCV格式
return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
def get_key_name(key):
if isinstance(key, keyboard.KeyCode):
return key.char
else:
return str(key)
# 监听按压
def on_press(key):
global 态
key_name=get_key_name(key)
# print(key_name)
# 操作=''
# if key_name=='w':
# W键按下=True
#
# elif key_name=='Key.left':
# 操作='一技能'
# elif key_name=='Key.down':
# 操作='二技能'
# elif key_name=='Key.right':
# 操作='三技能'
# elif key_name=='Key.up' :
# 攻击态=True
# 监听释放
def on_release(key):
global 态
key_name=get_key_name(key)
if key_name=='Key.up' :
态='弃'
elif key_name=='Key.left':
态='普通'
elif key_name=='Key.down':
态='过'
elif key_name=='Key.right':
态='死亡'
elif key_name=='a':
态='击杀敌方英雄'
elif key_name=='s':
态='击杀小兵或野怪或推掉塔'
elif key_name=='d':
态='被击杀'
elif key_name == 'w':
态 = '被击塔攻击'
#print("已经释放:", key_name)
if key == Key.esc:
# 停止监听
return False
# 开始监听
def start_listen():
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
th = threading.Thread(target=start_listen,)
th.start()
#筛选事件特征图片
#1、进入目录打开引索 方法抄
路径json='../判断数据样本test/_判断数据.json'
路径新='../判断数据样本/'
if not os.path.exists(路径新):
os.makedirs(路径新)
路径新 = 路径新 +'判断新.json'
全部数据={}
with open(路径json, encoding='ansi') as f:
while True:
df = f.readline()
df = df.replace('\'', '\"')
if df == "":
break
单元 = json.loads(df)
for key in 单元:
全部数据[key]=单元[key]
#print(全部数据)
for key in 全部数据:
记录文件 = open(路径新, 'a+')
# print(key + ':' + 全部数据[key])
图片路径 = '../判断数据样本test/' + key + '.jpg'
图片新路径 = '../判断数据样本/'+ key + '.jpg'
# 截图 = cv2.imread(图片路径)
截图 = cv2.imdecode(np.fromfile(图片路径, dtype=np.uint8), -1)
截图 = cv2ImgAddText(截图, 全部数据[key], 0, 0, (000, 222, 111), 25)
cv2.imshow('AAA', 截图)
cv2.waitKey()
while 态 == '暂停':
time.sleep(0.02)
新输出={}
校准输出=全部数据[key]
if 态=='过':
校准输出 = 全部数据[key]
elif 态=='普通':
校准输出 = '普通'
elif 态 == '死亡':
校准输出 = '死亡'
elif 态 == '被击杀':
校准输出 = '被击杀'
elif 态 == '击杀小兵或野怪或推掉塔':
校准输出 = '击杀小兵或野怪或推掉塔'
elif 态 == '击杀敌方英雄':
校准输出 = '击杀敌方英雄'
elif 态 == '被击塔攻击':
校准输出 = '被击塔攻击'
elif 态 == '弃' and key!='162098566208':
态 = '暂停'
continue
else:
print(1)
print(key, 校准输出)
新输出[key]=校准输出
json.dump(新输出, 记录文件, ensure_ascii=False)
记录文件.write('\n')
shutil.copy(图片路径, 图片新路径)
态 = '暂停'
记录文件.close()
# def CV信息显示():
# global 全部数据,态
#
#
#
#
# CV信息= threading.Thread(target=CV信息显示)
# CV信息.start()
# d=666
# for i in range(555):
#
# while 态=='暂停':
# time.sleep(1)
# print(d)
# 态 = '暂停'
# d=d+1