model与部分图片移至static下

This commit is contained in:
zhbaor 2024-11-12 12:46:09 +08:00
parent 78e6cca458
commit 40dd9c1f32
108 changed files with 106 additions and 365 deletions

View file

@ -1,16 +0,0 @@
# Models
## dbnet.onnx
DBNET 的模型文件,负责提取图像中的文字
## crnn_lite_lstm.onnx
CRNN 的轻量型模型文件,负责识别图像中的文字
## svm.model
SVM 分类器的模型文件,负责图像匹配判定
## depot.pkl
仓库物品的knn模型,负责仓库中的物品

View file

@ -41,7 +41,7 @@ from mower.utils import typealias as tp
from mower.utils.csleep import MowerExit, csleep
from mower.utils.datetime import format_time, get_server_weekday
from mower.utils.deprecated import deprecated
from mower.utils.digit_reader import DigitReader
from mower.utils.digit_reader import get_drone
from mower.utils.email import drop_template, send_message
from mower.utils.graph import SceneGraphSolver
from mower.utils.log import logger
@ -77,7 +77,6 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
self.clue_count_limit = 9
self.enable_party = True
self.leifeng_mode = False
self.digit_reader = DigitReader()
self.error = False
self.clue_count = 0
self.tasks = []
@ -1780,7 +1779,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
accelerate = self.find("factory_accelerate")
if accelerate:
drone_count = self.digit_reader.get_drone(config.recog.gray)
drone_count = get_drone(config.recog.gray)
logger.info(f"当前无人机数量为:{drone_count}")
if drone_count < config.conf.drone_count_limit or drone_count > 200:
logger.info(f"无人机数量小于{config.conf.drone_count_limit}->停止")
@ -1814,7 +1813,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
):
break
if not_customize:
drone_count = self.digit_reader.get_drone(config.recog.gray)
drone_count = get_drone(config.recog.gray)
logger.info(f"当前无人机数量为:{drone_count}")
# 200 为识别错误
if (
@ -1836,111 +1835,6 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
return
self.scene_graph_step(Scene.INFRA_MAIN)
# 用于制造站切换产物,请注意在调用该函数前有足够的无人机,并补足相应制造站产物,目前仅支持中级作战记录与赤金之间的切换
# def 制造站切换产物(self, room: str, 目标产物: str, not_customize=False, not_return=False):
# # 点击进入该房间
# self.enter_room(room)
# while self.get_infra_scene() == 9:
# time.sleep(1)
# config.recog.update()
# # 进入房间详情
# self.tap((config.recog.w * 0.05, config.recog.h * 0.95), interval=3)
# # 关闭掉房间总览
# error_count = 0
# while self.find('factory_accelerate') is None:
# if error_count > 5:
# raise Exception('未成功进入制造详情界面')
# self.tap((config.recog.w * 0.05, config.recog.h * 0.95), interval=3)
# error_count += 1
# accelerate = self.find('factory_accelerate')
# 无人机数量 = self.digit_reader.get_drone(config.recog.gray, config.recog.h, config.recog.w)
# if accelerate:
# self.tap_element('factory_accelerate')
# config.recog.update()
# 剩余制造加速总时间 = self.digit_reader.识别制造加速总剩余时间(config.recog.gray, config.recog.h, config.recog.w)
# # logger.info(f'制造站 B{room[5]}0{room[7]} 剩余制造总时间为 {剩余制造加速总时间}')
# 时 = int(剩余制造加速总时间[0:3])
# if 时 > 118: 当前产物 = '经验'
# else: 当前产物 = '赤金'
# if 当前产物 == 目标产物:
# logger.info('返回基建主界面')
# while self.get_infra_scene() != 201:
# if self.find('index_infrastructure') is not None:
# self.tap_element('index_infrastructure')
# elif self.find('12cadpa') is not None:
# config.device.tap((config.recog.w // 2, config.recog.h // 2))
# else:
# self.back()
# config.recog.update()
# else:
# logger.info(f'制造站 B{room[5]}0{room[7]} 当前产物为{当前产物},切换产物为{目标产物}')
# 需要无人机数 = 0
# while 需要无人机数 < 10:
# 总分钟数 = int(剩余制造加速总时间[4:6]) + 60 * 时
# if 当前产物 == '赤金':
# 需要无人机数 = (总分钟数 % 72) // 3 + 1
# elif 当前产物 == '经验':
# 需要无人机数 = (总分钟数 % 180) // 3 + 1
# else:
# logger.warning('目前不支持该产物切换策略,尚待完善')
# logger.info('返回基建主界面')
# while self.get_infra_scene() != 201:
# if self.find('index_infrastructure') is not None:
# self.tap_element('index_infrastructure')
# elif self.find('12cadpa') is not None:
# config.device.tap((config.recog.w // 2, config.recog.h // 2))
# else:
# self.back()
# config.recog.update()
# if 需要无人机数 > 无人机数量 - 10:
# logger.warning(f'''
# 切换产物需要无人机{需要无人机数}个,当前仅有{无人机数量}个,
# 无法切换产物,建议该任务至少在{(需要无人机数 - 无人机数量 + 10) * 3.5 // 3}分钟后再执行
# ''')
# logger.info('返回基建主界面')
# while self.get_infra_scene() != 201:
# if self.find('index_infrastructure') is not None:
# self.tap_element('index_infrastructure')
# elif self.find('12cadpa') is not None:
# config.device.tap((config.recog.w // 2, config.recog.h // 2))
# else:
# self.back()
# config.recog.update()
# else:
# logger.warning(f'需要加无人机{需要无人机数}个')
# for 次数 in range(需要无人机数):
# self.tap((config.recog.w * 1320 // 1920, config.recog.h * 502 // 1080), interval=0.05)
# config.recog.update()
# 剩余制造加速总时间 = self.digit_reader.识别制造加速总剩余时间(
# config.recog.gray, config.recog.h, config.recog.w)
# # logger.info(f'制造站 B{room[5]}0{room[7]} 剩余制造总时间为 {剩余制造加速总时间}')
# 总分钟数 = int(剩余制造加速总时间[4:6]) + 60 * 时
# if 当前产物 == '赤金':
# 需要无人机数 = (总分钟数 % 72) // 3 + 1
# elif 当前产物 == '经验':
# 需要无人机数 = (总分钟数 % 180) // 3 + 1
# else:
# logger.warning('目前不支持该产物切换策略,尚待完善')
# logger.info('返回基建主界面')
# while self.get_infra_scene() != 201:
# if self.find('index_infrastructure') is not None:
# self.tap_element('index_infrastructure')
# elif self.find('12cadpa') is not None:
# config.device.tap((config.recog.w // 2, config.recog.h // 2))
# else:
# self.back()
# config.recog.update()
# self.tap((config.recog.w * 3 // 4, config.recog.h * 4 // 5), interval=3) # 确认加速
# self.tap((config.recog.w * 9 // 10, config.recog.h // 2), interval=1) # 点击当前产品
# if 目标产物 == '经验':
# self.tap((config.recog.w // 2, config.recog.h // 2), interval=1) # 点击中级作战记录
# elif 目标产物 == '赤金':
# self.tap((config.recog.w // 10, config.recog.h // 3), interval=1) # 进入贵金属分类
# self.tap((config.recog.w // 2, config.recog.h // 4), interval=1) # 点击赤金
# self.tap((config.recog.w * 3 // 4, config.recog.h * 2 // 7), interval=1) # 点击最多
# self.tap((config.recog.w * 3 // 4, config.recog.h * 5 // 6), interval=1) # 确认数量
# self.tap((config.recog.w * 3 // 4, config.recog.h * 7 // 10), interval=1) # 确认更改
def get_order(self, name):
if name in self.op_data.operators:
return True, self.op_data.operators[name].arrange_order
@ -2408,7 +2302,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
if self.drone_room is None or (
self.drone_room == room and room in self.op_data.run_order_rooms
):
drone_count = self.digit_reader.get_drone(config.recog.gray)
drone_count = get_drone(config.recog.gray)
logger.info(f"当前无人机数量为:{drone_count}")
# 200 为识别错误
if (

View file

@ -27,11 +27,11 @@ from mower.utils.recognize import Scene
def 导入_数字模板():
模板文件夹 = f"{__rootdir__}/resources/depot_num"
模板文件夹 = f"{__rootdir__}/static/depot_num"
数字模板列表 = []
for 文件名 in sorted(os.listdir(模板文件夹)):
文件路径 = os.path.join(模板文件夹, 文件名)
数字模板列表.append(loadimg(文件路径, True))
数字模板列表.append(loadimg.__wrapped__(文件路径, True))
return 数字模板列表
@ -165,11 +165,11 @@ class depotREC(SceneGraphSolver):
bf = cv2.BFMatcher(cv2.NORM_HAMMING2, crossCheck=True)
self.detector = orb
self.matcher = bf
with lzma.open(f"{__rootdir__}/models/CONSUME.pkl", "rb") as pkl:
with lzma.open(f"{__rootdir__}/static/CONSUME.pkl", "rb") as pkl:
self.knn模型_CONSUME = pickle.load(pkl)
with lzma.open(f"{__rootdir__}/models/MATERIAL.pkl", "rb") as pkl:
with lzma.open(f"{__rootdir__}/static/MATERIAL.pkl", "rb") as pkl:
self.knn模型_MATERIAL = pickle.load(pkl)
with lzma.open(f"{__rootdir__}/models/NORMAL.pkl", "rb") as pkl:
with lzma.open(f"{__rootdir__}/static/NORMAL.pkl", "rb") as pkl:
self.knn模型_NORMAL = pickle.load(pkl)
# self.时间模板 = self.导入_时间模板()
self.物品数字 = 导入_数字模板()

View file

@ -10,11 +10,12 @@ from mower.solvers.infra.filter import RIIC_Filter
from mower.utils import config
from mower.utils.character_recognize import operator_room_select
from mower.utils.csleep import MowerExit
from mower.utils.digit_reader import get_time
from mower.utils.image import cropimg, loadres, thres2
from mower.utils.log import logger
from mower.utils.rapidocr import engine
with lzma.open(f"{__rootdir__}/models/operator_room.model", "rb") as f:
with lzma.open(f"{__rootdir__}/static/operator_room.model", "rb") as f:
OP_ROOM = pickle.loads(f.read())
kernel = np.ones((12, 12), np.uint8)
@ -175,7 +176,7 @@ class BaseMixin:
config.recog.update()
try:
if use_digit_reader:
time_str = self.digit_reader.get_time(config.recog.gray)
time_str = get_time(config.recog.gray)
else:
time_str = self.read_screen(config.recog.img, type="time", cord=cord)
h, m, s = str(time_str).split(":")

View file

@ -4,7 +4,7 @@ from mower.solvers.infra.base_mixin import BaseMixin
from mower.solvers.infra.enter_room import EnterRoomSolver
from mower.utils import config
from mower.utils import typealias as tp
from mower.utils.digit_reader import DigitReader
from mower.utils.digit_reader import get_drone
from mower.utils.graph import SceneGraphSolver
from mower.utils.log import logger
from mower.utils.recognize import Scene
@ -31,7 +31,7 @@ class DroneSolver(SceneGraphSolver, BaseMixin):
self.room = room
while cur_count is None and not all_in:
try:
cur_count = DigitReader().get_drone(config.recog.gray)
cur_count = get_drone(config.recog.gray)
except Exception:
logger.exception("当前场景无法获取无人机数量")
EnterRoomSolver().run(self.room, detail=False)

View file

@ -6,7 +6,6 @@ from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from mower.utils import config
from mower.utils.digit_reader import DigitReader
from mower.utils.email import report_template, send_message
from mower.utils.graph import SceneGraphSolver
from mower.utils.image import cropimg, thres2
@ -40,7 +39,6 @@ class ReportSolver(SceneGraphSolver):
self.low_range_gray = (100, 100, 100)
self.high_range_gray = (255, 255, 255)
self.date = (datetime.datetime.now() - datetime.timedelta(hours=4)).date()
self.digitReader = DigitReader()
self.report_res = {
"作战录像": None,
"赤金": None,

View file

@ -5,7 +5,7 @@ from mower.solvers.infra.get_order_remaining_time import (
GetOrderRemainingTimeSolver,
)
from mower.utils import config
from mower.utils.digit_reader import DigitReader
from mower.utils.digit_reader import get_drone
from mower.utils.graph import SceneGraphSolver
from mower.utils.log import logger
@ -32,7 +32,7 @@ class RunOrderSolver(SceneGraphSolver):
# 使用无人机加速
if drone:
# 读取当前无人机数量避免重复开关
cur_drone_count = DigitReader().get_drone(config.recog.gray)
cur_drone_count = get_drone(config.recog.gray)
drone_count = ReadOriginalOrderRemainTimeSolver().run(room) // 180 - 1
DroneSolver().run(room, drone_count, cur_count=cur_drone_count)

View file

@ -7,7 +7,7 @@ from mower.solvers.infra.drone import DroneSolver
from mower.solvers.infra.enter_room import EnterRoomSolver
from mower.utils import config
from mower.utils import typealias as tp
from mower.utils.digit_reader import DigitReader
from mower.utils.digit_reader import get_drone
from mower.utils.graph import SceneGraphSolver
from mower.utils.image import cropimg, thres2
from mower.utils.log import logger
@ -45,7 +45,7 @@ class SwitchProductSolver(SceneGraphSolver, BaseMixin):
return True
# 读取当前无人机数量避免重复开关
cur_drone_count = DigitReader().get_drone(config.recog.gray)
cur_drone_count = get_drone(config.recog.gray)
# 读取生产速度
speed = self.read_speed()
# 获取无人机加速的剩余时间

View file

@ -16,7 +16,7 @@ from mower.solvers.infra.run_order.read_original_order_remaining_time import (
from mower.solvers.infra.todo_list import TodoListSolver
from mower.utils import config
from mower.utils.config.plan import Facility
from mower.utils.digit_reader import DigitReader
from mower.utils.digit_reader import get_drone
from mower.utils.log import logger
from mower.utils.scheduler import scheduler
@ -167,7 +167,7 @@ class MiniBase:
break
# 无人机拉开间隔
EnterRoomSolver().run(task_a.room, detail=False)
total = DigitReader().get_drone(config.recog.gray)
total = get_drone(config.recog.gray)
time_no_efficiency = timedelta(
seconds=ReadOriginalOrderRemainTimeSolver().run(task_a.room)
)

View file

@ -5,8 +5,8 @@ import cv2
import numpy as np
from mower.data import agent_list
from mower.models import Digtal
from mower.solvers.navigation.utils import generate_name
from mower.static import Digital
from mower.utils import config
from mower.utils.graph import SceneGraphSolver
from mower.utils.image import cropimg, loadres, thres2
@ -132,7 +132,7 @@ class OperatorSolver(SceneGraphSolver):
min_score, rank = 1, None
for i in range(1, 8):
im = Digtal().secret_front[i]
im = Digital().secret_front[i]
result = cv2.matchTemplate(img, im, cv2.TM_SQDIFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
if min_val < min_score:

View file

@ -10,7 +10,7 @@ from mower.data import (
agent_with_tags,
recruit_agent,
)
from mower.models import Digtal
from mower.static import Digital
from mower.utils import config
from mower.utils.email import recruit_rarity, recruit_template, send_message
from mower.utils.graph import SceneGraphSolver
@ -19,10 +19,10 @@ from mower.utils.log import logger
from mower.utils.recognize import Scene
from mower.utils.vector import va
number = Digtal().riic_base_digits
with lzma.open(f"{__rootdir__}/models/recruit_result.pkl", "rb") as f:
number = Digital().riic_base_digits
with lzma.open(f"{__rootdir__}/static/recruit_result.pkl", "rb") as f:
recruit_res_template = pickle.load(f)
with lzma.open(f"{__rootdir__}/models/recruit.pkl", "rb") as f:
with lzma.open(f"{__rootdir__}/static/recruit.pkl", "rb") as f:
tag_template = pickle.load(f)
job_list = [
"recruit/riic_res/CASTER",
@ -556,7 +556,7 @@ class RecruitSolver(SceneGraphSolver):
area = [(850, 280), (980, 400)]
img = cropimg(config.recog.gray, area)
templates = Digtal().noto_sans
templates = Digital().noto_sans
default_height = 28
if height and height != default_height:

View file

@ -2,7 +2,7 @@ from datetime import datetime, timedelta
import cv2
from mower.models import Digtal
from mower.static import Digital
from mower.utils import config
from mower.utils import typealias as tp
from mower.utils.csleep import MowerExit
@ -103,7 +103,7 @@ class SecretFront(SceneGraphSolver):
score = []
for i in self.target:
result = cv2.matchTemplate(
img, Digtal().secret_front[i], cv2.TM_SQDIFF_NORMED
img, Digital().secret_front[i], cv2.TM_SQDIFF_NORMED
)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
score.append(min_val)

View file

@ -1,6 +1,6 @@
import cv2
from mower.models import shop
from mower.static import shop
from mower.utils import config
from mower.utils import typealias as tp
from mower.utils.graph import SceneGraphSolver

View file

@ -8,25 +8,25 @@ from mower.utils.image import loadimg
from mower.utils.path import get_path
from mower.utils.singleton import singleton
with lzma.open(f"{__rootdir__}/models/avatar.pkl", "rb") as f:
with lzma.open(f"{__rootdir__}/static/avatar.pkl", "rb") as f:
avatar = pickle.load(f)
with lzma.open(f"{__rootdir__}/models/portrait.pkl", "rb") as f:
with lzma.open(f"{__rootdir__}/static/portrait.pkl", "rb") as f:
portrait = pickle.load(f)
with lzma.open(f"{__rootdir__}/models/navigation.pkl", "rb") as f:
with lzma.open(f"{__rootdir__}/static/navigation.pkl", "rb") as f:
navigation = pickle.load(f)
with lzma.open(f"{__rootdir__}/models/shop.pkl", "rb") as f:
with lzma.open(f"{__rootdir__}/static/shop.pkl", "rb") as f:
shop = pickle.load(f)
@singleton
class Digtal:
class Digital:
@cached_property
def secret_front(self) -> dict[str, tp.GrayImage]:
data = {}
for i in get_path("@install/mower/resources/digtal/secret_front").iterdir():
for i in get_path("@install/mower/static/digital/secret_front").iterdir():
try:
data[int(i.stem)] = loadimg.__wrapped__(i, True)
except ValueError:
@ -36,13 +36,13 @@ class Digtal:
@cached_property
def riic_base_digits(self) -> dict[str, tp.GrayImage]:
data = {}
for i in get_path("@install/mower/resources/digtal/riic_base_digits").iterdir():
for i in get_path("@install/mower/static/digital/riic_base_digits").iterdir():
data[int(i.stem)] = loadimg.__wrapped__(i, True)
return data
@cached_property
def noto_sans(self) -> dict[str, tp.GrayImage]:
data = {}
for i in get_path("@install/mower/resources/digtal/noto_sans").iterdir():
for i in get_path("@install/mower/static/digital/noto_sans").iterdir():
data[int(i.stem)] = loadimg.__wrapped__(i, True)
return data

View file

@ -3,7 +3,7 @@ from functools import partial
import cv2
import numpy as np
from mower.models import avatar, portrait
from mower.static import avatar, portrait
from mower.utils import typealias as tp
from mower.utils.image import cmatch, cropimg, loadres, thres2
from mower.utils.log import logger

Some files were not shown because too many files have changed in this diff Show more