前言
在优化改进1中我们在功能点上实现了获取游戏显示画面与自描触发机制并不显示,今日份的更新结果将要达到如下效果:
- 能够快速完成游戏画面的获取,包括但不限于全屏与自定义屏;
- 对游戏画面目标物判断处理速率应该与显示器画面更新频率控制在10以内;
- 对目标人物中心点坐标进行鼠标移动的速率应当控制在0.01s之内;
- 建立起一种机制能够完美适配所有窗口画面。
需求分析
针对效果1&4进行分析:
对需要完成的效果1进行分析并综合考虑后面的目标提取时输出的坐标为以图像为基准计算的坐标。当游戏窗口为适配显示器屏大小时,此时计算出来的坐标恰好为目标检测的人物坐标;当游戏窗口不是适配显示器屏大小时,我们可以采取如下方案:
1. 将游戏窗口的左上角置于显示屏的左上角,使这二者重合,这样在计算目标的坐标的时候也能够使输出的人物目标坐标没有偏差;
2. 在开启游戏后打开“自描”程序,在程序的开端添加一个ROI区域获取,使屏幕截取部分为目标检测的输入,但是此时需注意的时此时计算的坐标为你画的ROI区域,然而在计算坐标的时候是会以整张显示器显示的坐标系下计算的,这个时候需要在代码中添加一个ROI区域的左上角坐标与显示器左上角坐标的差值,那么我们在计算目标坐标的位置时能对应起显示器的坐标了,确保了鼠标控制的准确性。
考虑到计算量以及便于使用者操作,对上述两个方案进行比对,对外优选方案1,对内则无所谓。
针效果2&3进行分析
这两个效果优化的实现需要无情的对GPU&CPU进行压榨了,大体上可以分为如下的几个方面进行优化:
1. 采用轻量型的主干网络,例如Xception进行替代,由于我们仅仅只对一类目标进行目标检测,因此绝大多数的网络都可以满足,如果网络学习能力欠佳的话,后面还可以采用增加数据样本以及扩增来完成实现准确率的提升;
2. 经实验比对:pyautogui 进行控制鼠标移动较为缓慢,现在将其替换,更改为更优于pyautogui 的控制鼠标移动的库;
3. 开辟线程池,新增父子线程控制(由于大部分时间不并不一定需要使用“自描”)。
结束语
今日份更新就到这里了,以上就是我今日思考即将准备完成的“自描”外挂优化方案了。欢迎大家提出更加完美的优化改进的地方!