5.1. Local Map - LmeSzinc/AzurLaneAutoScript GitHub Wiki
想必你已经阅读过 Alas 的海图识别的文档。在识别之后,module/map_detection/view.py
将两种识别方法封装了起来,并整合了敌人识别
View
对象的识别结果,称为局部地图(Local Map)。局部地图的识别只需要一张游戏截图,并且可以在 Alas 外运行,你可以使用以下代码来调试 Alas 的海图识别。
class Config:
# Paste your config here
pass
# Image filepath here
file = ''
md = View(AzurLaneConfig('template').merge(Config()))
image = np.array(Image.open(file).convert('RGB'))
# If you have any `homo_storage` in log, paste here and uncomment
# sto = ((8, 5), [(355, 117), (1265, 117), (288, 559), (1417, 559)])
# md.backend.load_homography(storage=sto)
md.load(image)
md.predict()
md.show()
md.backend.draw()
创建一个 View 对象,需要 AzurLaneConfig,模式可选普通图 main
或者大世界 os
。
默认情况下,局部地图识别使用 Homography 方法识别,你可以在 config 里指定识别方法
DETECTION_BACKEND = 'perspective' # Or 'homography'
在 Homography 方法下,第一次识别会调用 Perspective 方法计算透视变换参数,并缓存至 homo_storage。一般而言,海域内的透视不会变化,Alas 会一直使用同一个 View 对象,同一个 View 对象也会使用同一个 homo_storage,直到任务切换。如果第一次计算的透视变换参数不正确(比如镜头位于角落),会影响到接下来的识别。而在 Perspective 方法下,不会有这个影响。
载入一张截图,完成海图识别,获得以下属性:
-
grids 海域中的每一个格子,
dict, key: (x, y), value: Grid object
-
shape 局部海域的大小,
(x, y)
-
center_loca 镜头中心对准的格子的坐标,
(x, y)
- center_offset 镜头中心偏离格子中心的向量,在计算滑动距离时使用
- swipe_base 反映海域中网格大小的量,在计算滑动距离时使用
识别地图中的敌人,问号,己方舰队等
在不重新进行海图识别的情况下,将图片载入至所有格子内
选择海域中任何你感兴趣格子,返回 SelectedGrids 对象