通过YOLOV5实现:王者荣耀百里守约自瞄

article/2025/8/19 4:50:10

前期提要:

本文章仅供技术讨论使用。

关于如何通过YOLOV5去检测到王者中的敌方人物,在网上有很多相关的文章和教学视频我在这里就不过多的阐述,本篇文章主要讲的是在实现中比较难处理的一些技术点:如何获取高刷新率的手机屏幕、王者荣耀中的技能遥杆方向和实际技能释放方向不一致的问题要如何解决。

如何获取高刷新率的手机屏幕

目前主流的解决方案是通过scrcpy来实现高刷新率的获取,其原理是让手机上建立一个视频流rtp的服务端,然后电脑通过对接这个rtp视频流就可以直接获取手机屏幕的信息根据这个理论得到的最终时间延迟仅仅5ms
e9eeb767dac1ed8f84ef40160c99b59.jpg

如何实现呢?

scrcpy的文档中的描述如下
image.png
这里说好要如何实现了,但是这都是通shell命令来实现了,那么让python去执行这个shell命令,然后让python搭建一个客户端接收来自手机端的视频流数据,最后通过opencv来显示不就可以了吗?是的,当这些都已经有人封装好一个包给你,你只需要调用即可
https://github.com/leng-yue/py-scrcpy-client
image.png
它的文档中关于如何使用也是非常简单的:
image.png

还有细节:慢放效应如何解决

经过我实际上手使用后发现,一旦我把接收到的视频帧数据进行处理,我在代码上打印出了fps高达100多,但是电脑获取的手机画面就延迟非常高!为什么呢?这是因为接收到一帧后处理花费10ms然后放到opencv显示,而opencv显示的时候会比较慢,实际上1秒钟代码可以处理100张,但是opencv显示只能显示40张,那么剩下60张就会放到第2秒中显示,这样的话第二秒就要显示160张图片,第3秒也就是120+100张,以此类推你就会发现越到后面你发现电脑显示手机屏幕中游戏人物的动作非常流畅,但是游戏里面的人物动作非常慢。解决方法也是非常简单,自己定义一个队列,开启两个线程,一个是显示线程,一个是处理游戏数据的线程,当处理游戏画面线程处理好一帧图片后就把这帧放到大小为3的队列(大小可以自己确定)中去,而显示线程就会一直去队列中取帧来显示,这就确保取到的帧都是最新处理过的。
image.png

如何解决遥杆方向和技能释放方向不一致的问题

问题描述:
假设我识别到敌人在我的左上方60°,那么我技能遥杆移动的方向也是左上方60°,但是由于王者是一个3D游戏,遥杆的位置和人物的位置不一样,那么技能遥杆移动的方向也是左上方60°,可能技能释放的反向就是54°。你可能回想到加一个偏移比如60°偏移-6°即可?但实际情况是如果遥杆瞄准方向是65°,那么技能释放方向就是57°,二者相差由6°变味了8°,如果遥杆135°,那么实际技能释放就是150°相差变为+25°,这就很难做一个简单的偏移来解决问题了。
image.png

我做了很多信息收集和猜想假设最后得出了公式image.png

当我把技能释放的角度固定为x轴的角度的时候,我发现魔法值变成了线性关系了
image.png
通过计算得到 魔法值=-0.0066x+1.6 其中x是敌人和我在x轴的角度

最终得到的效果

在这里插入图片描述

如何提升准度呢?

通过机器学习的sklearn工具包以及最新的5个角度数据,通过5个角度的数据进行线性回归,之后预测第6和第7个预测数据,一次提升准确度。示例代码如下:

import numpy as np
from sklearn.linear_model import LinearRegressionclass Predict:def __init__(self):self.angles = []def set(self, angle):self.angles.append(angle)if len(self.angles) > 5:self.angles.pop(0)def predict(self):if len(self.angles) < 5:return None# 将时间和角度映射成一维数组,并reshape成(n, 1)格式,方便模型训练X = np.array(range(len(self.angles))).reshape(-1, 1)y = np.array(self.angles).reshape(-1, 1)model = LinearRegression().fit(X, y)# 对第6个和第7个时间点进行预测next_time_steps = np.array([len(self.angles), len(self.angles) + 1]).reshape(-1, 1)prediction = model.predict(next_time_steps)return prediction.flatten()predictor = Predict()
predictor.set(10)
predictor.set(20)
predictor.set(30)
predictor.set(40)
predictor.set(50)
print(predictor.predict())  # Outputs: [60. 70.]
predictor.set(60)
print(predictor.predict())  # Outputs: [70. 80.]

http://chatgpt.dhexx.cn/article/68PesIV5.shtml

相关文章

Ai实现FPS游戏自动瞄准 yolov5fps自瞄

大家好 我是毕加锁 (锁!) 今天来分享一个Yolov5 FPS跟枪的源码解析和原理讲解。代码比较粗糙 各位有什么优化的方式可以留言指出&#xff0c;可以一起交流学习。 需要了解的东西和可能会遇到的问题1.xy坐标点与当前鼠标的xy坐标点距离计算 2.获取窗口句柄&#xff0c;本文使…

[CPU+目标检测] openvino实现Robomaster自瞄

这篇文章为大连理工大学Robomaster凌Bug战队的李乐恒同学成果&#xff01; 他在CPU上利用openvino这样的深度学习算法实现了Robomaster的自瞄&#xff0c;大大提高了robomaster自瞄的上界&#xff0c;且达到了良好的检测效果。所有代码全部开源&#xff0c; github主页如下&am…

基于C++的车辆装甲板检测自瞄系统

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85773209 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85773209 装甲板检测 由于在比赛过程中操作手是第一视角&#xff0c;很难用手动瞄准。通过装甲板检测就是自瞄系统…

CFAIyolo5自瞄源码分享

比市面上强的多 阿里云盘分享

FPS 游戏自瞄原理

了解FPS游戏自瞄漏洞 经常玩游戏的朋友&#xff0c;应该知道FPS游戏&#xff0c;例如&#xff1a;穿越火线&#xff0c;逆战等等&#xff0c;他们的特点就是以第一人称视角进行操作人物&#xff0c;屏幕中间会有一个准星&#xff0c;通过准星瞄准敌人进行攻击以达到击杀效果和…

FPS游戏通用自瞄与透视算法详解!!

自瞄算法与实现&#xff1a; 1&#xff1a;首先我们要找到一个敌人的三维坐标。 2&#xff1a;我们还要找到自己的三维坐标。 3&#xff1a;我们还要找到自己的鼠标坐标X与Y&#xff08;这里的鼠标坐标X与Y是角度&#xff0c;X为360&#xff0c;Y正中间为0向上减少到负90度&…

Web前端技术HTML

HTML&#xff08;Hyper Text Markup Language&#xff09; 目录 一、什么是HTML&#xff1f; 二、为什么需要HTML&#xff1f; 三、HTML标签 四、HTML文档结构 五、HTML标签属性 1、标签的语法 2、注意事项 3、常用标签 一、什么是HTML&#xff1f; HTML指的是超文本…

前端技术概述

目录 一、开发框架 1、C/S架构&#xff08;Client-Server&#xff09; 2、B/S架构&#xff08;Browser-Server&#xff09; 二、前端术语 1、渲染 2、Front-end&#xff08;前端开发&#xff09; 3、Back-end&#xff08;后端开发&#xff09; 三、HTML的DOM结构 四、…

如何写前端技术方案文档?

大厂技术 高级前端 Node进阶 点击上方 程序员成长指北&#xff0c;关注公众号 回复1&#xff0c;加入高级Node交流群 前言 百度百科对计算机软件的的定义为&#xff1a;“计算机软件( Software&#xff0c;也称软件)是指计算机系统中的程序及其文档&#xff0c;程序是计算任务…

前端技术体系与发展计划

为什么会想起来整理这么一套东西 最近和很多已经工作了的同学聊天&#xff0c;发现大家都遇到了很多的问题或者说是烦恼。整理了一下&#xff0c;大体可以分为两个大的种类&#xff1a; 关于前端技术体系的问题关于技术能力发展的问题 从这些问题中&#xff0c;我抽出来几个…

前端技术发展历程

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 随着互联网的不断发展…

前端技术简介

声明&#xff1a;本文转载自http://www.lvyestudy.com/les_hj/hj_1.1.aspx&#xff0c;如需要了解更多关于前端的知识&#xff0c;请查看该链接 在HTML入门教程学习之前&#xff0c;我们有必要跟大家讲一下网站开发的一些知识。了解这些知识&#xff0c;对你以后网站开发之路如…

2020 年前端技术发展盘点

2020 年已经结束&#xff0c;这一年里面因为疫情&#xff0c;生活和工作中大家都有受到一定的影响。但是在 2020 年里面前端技术的发展依然没有停止脚步。 而我们作为前端开发者&#xff0c;必定需要对技术的更新换代有所了解。虽然我们不需要去学习所有新出来的技术。但是时刻…

前端技术(html)

目录 一、HTML 1. 概念 2. 快速入门 3. 开发工具 HBuilder 3.1 HBuilder介绍 3.2 HBuilder下载 3.3 HBuilder的安装与使用 3.4 使用HBuilder创建项目 4. HTML文档的基本结构 4.1 基本结构 4.2 HTML注释 5. HTML中常用标签 5.1.文本标签 5.2 图片标签 5.3列表标签 5.4…

【狂神说Java】Vue学习笔记01:前端知识体系

本文根据B站【狂神说Java】vue系列视频整理&#xff0c;如需观看视频&#xff0c;请点击链接跳转 【狂神说Java】Vue视频 2、前端知识体系 想要成为真正的“互联网Java全栈工程师”还有很长的一段路要走&#xff0c;其中前端是绕不开的一门必修课。本阶段课程的主要目的就是带…

SUMO安装及环境变量设置

sumo安装 1.打开sumo官网&#xff0c;进入下载界面 2.解压安装包 3.打开bin文件&#xff0c;创建sumo-gui和netedit快捷方式 SUMO环境变量配置 1.右击我的电脑&#xff0c;点击属性 2.点击高级系统设置&#xff0c;环境变量 3.在用户变量的path&#xff0c;加入以下变量 4.…

Python pip保姆级环境变量设置

1.打开系统中的高级系统设置 2.点击环境变量 3.在系统变量区域&#xff0c;选中path&#xff0c;点击编辑进入编辑页面。 4.将python Scripts文件夹所在位置复制粘贴到变量值中&#xff0c;注意名称之间有分号。 5.winr cmd回车&#xff0c;输入pip出现以下页面说明设置成功。…

MySQL数据库环境变量设置

1、鼠标左键&#xff0c;点击设置 2、出现一个框&#xff0c;在框里&#xff0c;填写&#xff0c;高级系统设置&#xff0c;确定 3、打开了高级系统设置&#xff0c;点击红圈圈着的“环境变量” 4、出现一个新的小弹框&#xff0c;点击path&#xff0c;&#xff08;路径的意思&…

Mac设置环境变量

环境变量是电脑操作系统中常用的一些变量&#xff0c;作用类似于将一些常用命令所在的文件夹位置预先告诉操作系统&#xff0c;当以后需要用到这些命令时&#xff0c;操作系统就自动来这些位置取。 例如&#xff0c;常见的Java开发中配置的相关环境变量&#xff1a;PATH&#…