1 Star 0 Fork 0

painx/WZCQ

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
筛选事件特征图片.py 4.69 KB
一键复制 编辑 原始数据 按行查看 历史
冯泉荔 提交于 2021-07-05 01:01 . Update 筛选事件特征图片.py
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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/painx/WZCQ.git
git@gitee.com:painx/WZCQ.git
painx
WZCQ
WZCQ
main

搜索帮助

D67c1975 1850385 1daf7b77 1850385