content: 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
  