model与部分图片移至static下
This commit is contained in:
parent
78e6cca458
commit
40dd9c1f32
108 changed files with 106 additions and 365 deletions
|
@ -376,7 +376,7 @@ class Arknights数据处理器:
|
|||
im = cv2.erode(im, np.ones((5, 5)))
|
||||
template[operator] = im
|
||||
|
||||
with lzma.open("mower/models/recruit_result.pkl", "wb") as f:
|
||||
with lzma.open("mower/static/recruit_result.pkl", "wb") as f:
|
||||
pickle.dump(template, f)
|
||||
|
||||
def load_recruit_tag(self):
|
||||
|
@ -398,7 +398,7 @@ class Arknights数据处理器:
|
|||
recruit_tag_template[tag] = cv2.cvtColor(
|
||||
np.array(im.crop(im.getbbox())), cv2.COLOR_RGB2BGR
|
||||
)
|
||||
with lzma.open("./mower/models/recruit.pkl", "wb") as f:
|
||||
with lzma.open("./mower/static/recruit.pkl", "wb") as f:
|
||||
pickle.dump(recruit_tag_template, f)
|
||||
|
||||
def 输出_公招资源(self):
|
||||
|
@ -452,9 +452,9 @@ class Arknights数据处理器:
|
|||
|
||||
和添加物品至前端文件() 有联动 , 添加物品提供了分类的图片位置"""
|
||||
|
||||
self.训练仓库的knn模型("NORMAL", "./mower/models/NORMAL.pkl")
|
||||
self.训练仓库的knn模型("CONSUME", "./mower/models/CONSUME.pkl")
|
||||
self.训练仓库的knn模型("MATERIAL", "./mower/models/MATERIAL.pkl")
|
||||
self.训练仓库的knn模型("NORMAL", "./mower/static/NORMAL.pkl")
|
||||
self.训练仓库的knn模型("CONSUME", "./mower/static/CONSUME.pkl")
|
||||
self.训练仓库的knn模型("MATERIAL", "./mower/static/MATERIAL.pkl")
|
||||
|
||||
def 输出_在房间内的干员名的模型(self):
|
||||
font = ImageFont.truetype("mower/fonts/SourceHanSansCN-Medium.otf", 37)
|
||||
|
@ -483,7 +483,7 @@ class Arknights数据处理器:
|
|||
# cv2.imwrite(f"/home/zhao/Desktop/data/{operator}.png", tpl)
|
||||
data[operator] = tpl
|
||||
|
||||
with lzma.open("mower/models/operator_room.model", "wb") as f:
|
||||
with lzma.open("mower/static/operator_room.model", "wb") as f:
|
||||
pickle.dump(data, f)
|
||||
|
||||
def avatar_and_portrait(self, save_img=False):
|
||||
|
@ -530,7 +530,7 @@ class Arknights数据处理器:
|
|||
kp, des = fast_keypoints(full, mask)
|
||||
pt = [p.pt for p in kp]
|
||||
data = {"w": w, "h": h, "col": col, "name": name_list, "pt": pt, "des": des}
|
||||
with lzma.open(f"./mower/models/{name}.pkl", "wb") as f:
|
||||
with lzma.open(f"./mower/static/{name}.pkl", "wb") as f:
|
||||
pickle.dump(data, f)
|
||||
|
||||
extract("avatar", ((20, 51), (160, 146)))
|
||||
|
@ -666,7 +666,7 @@ class Arknights数据处理器:
|
|||
|
||||
def levels(self):
|
||||
levels_json = 加载json("./ArknightsGameResource/levels.json")
|
||||
with lzma.open("mower/models/levels.pkl", "wb") as f:
|
||||
with lzma.open("mower/static/levels.pkl", "wb") as f:
|
||||
pickle.dump(levels_json, f)
|
||||
|
||||
def 读取模组(self):
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
# Models
|
||||
|
||||
## dbnet.onnx
|
||||
|
||||
DBNET 的模型文件,负责提取图像中的文字
|
||||
|
||||
## crnn_lite_lstm.onnx
|
||||
|
||||
CRNN 的轻量型模型文件,负责识别图像中的文字
|
||||
|
||||
## svm.model
|
||||
|
||||
SVM 分类器的模型文件,负责图像匹配判定
|
||||
|
||||
## depot.pkl
|
||||
仓库物品的knn模型,负责仓库中的物品
|
|
@ -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 (
|
||||
|
|
|
@ -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.物品数字 = 导入_数字模板()
|
||||
|
|
|
@ -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(":")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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()
|
||||
# 获取无人机加速的剩余时间
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue