前言
紧接着上篇《前奏》来写写,这篇主要是完成两个目标
1. 完成CS中人物的检测
2. 完成鼠标的移动
为了完成上述的这两个目标的同时同时兼顾着运行速率,在不影响目标的检测率的前提下我们在选用检测人物的网络应当足够轻量;在控制鼠标方便我们可以应当让鼠标能够 快速移动到指定位置,这样能够使我们进行自瞄的时候能够快速锁定目标人物。 在这篇之中,我将采用一段视频进行验证我的猜想,后续再将猜想进行验证实施优化。
完成目标人物检测
我们选择网络上的那些游戏视频,任意选择一个含有人物目标的帧进行提取出来,然后对取出来的帧采用LabelImg进行标注,对标注得到的数据进行训练 我们选择yoloV5-n 这个框架较能够同时满足准确率的同时也能满足检测速率要求。
修改网络输出部分:
由于输出中是目标检测框的左上顶点的XY坐标以及宽和高,但是需要控制鼠标移动的位置的话是一个点,因此我们需要取目标检测的矩形框的中心点进行输出 修改输出部分代码如下:
ini
复制代码
for i, c in list(enumerate(top_label)): box = top_boxes[i] top, left, bottom, right = box top = max(0, np.floor(top).astype('int32')) left = max(0, np.floor(left).astype('int32')) bottom = min(image.size[1], np.floor(bottom).astype('int32')) right = min(image.size[0], np.floor(right).astype('int32')) LabX = left + right / 2 LabY = top + bottom / 2
完成鼠标移动控制
这里我们选择 pyautogui 库进行鼠标的控制,其代码示例如下
ini
复制代码
pyautogui.moveTo(x,y,duration=0.1)
代码解释:
这里的x,y坐标 代码当前显示器下的坐标值,坐标计算方式是以左上角为原点,显示器的宽为x轴,高为y轴 ,duration=0.1 表明鼠标移动到这里耗时为0.1秒
结束语
今日时间紧迫,暂且更新到这里了,还望诸位海涵。在此向大家致敬!如本系列文章更新对你有帮助,请持续性关注!