位置: IT常识 - 正文

Ai实现FPS游戏自动瞄准 yolov5fps自瞄(游戏ai模式是什么意思)

编辑:rootadmin
Ai实现FPS游戏自动瞄准 yolov5fps自瞄

推荐整理分享Ai实现FPS游戏自动瞄准 yolov5fps自瞄(游戏ai模式是什么意思),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:ai制作游戏,ai加帧,ai智能打游戏,Ai实现FPS游戏自动瞄准 yolov5fps自瞄,Ai实现FPS游戏自动瞄准 yolov5fps自瞄,ai打fps,Ai实现FPS游戏自动瞄准 yolov5fps自瞄,ai打fps,内容如对您有帮助,希望把文章链接给更多的朋友!

大家好 我是毕加锁 (锁!)

今天来分享一个Yolov5 FPS跟枪的源码解析和原理讲解。代码比较粗糙 各位有什么优化的方式可以留言指出,可以一起交流学习。 

需要了解的东西和可能会遇到的问题1.xy坐标点与当前鼠标的xy坐标点距离计算

2.获取窗口句柄,本文使用的是根据窗口名称获取句柄

3.推理方式:本文使用的是GPU(为啥呢?速度快噻,因为我3060显卡噻~)。

4.屏幕宽高获取和敌人坐标获取和计算哪个是最近的敌人并控制鼠标去敌人身上和头上。(为什么说是身体和头部呢,因为还有一个方式,就是只需要敌人身体坐标就可以计算得出敌人头部坐标)干货噢~

Ai实现FPS游戏自动瞄准 yolov5fps自瞄(游戏ai模式是什么意思)

5.还有鼠标按键状态获取。

正文开始吧,我们就从头开始代码解析吧。先来一个两个xy坐标的距离计算

class Point():    def __init__(self, x1, y1, x2, y2):        self.x1 = x1        self.y1 = y1        self.x2 = x2        self.y2 = y2class Line(Point):    def __init__(self, x1, y1, x2, y2):        super().__init__(x1, y1, x2, y2)    def getlen(self):        changdu = math.sqrt(math.pow((self.x1 - self.x2), 2) + math.pow((self.y1 - self.y2), 2))        return changdu

上面这段代码的使用方式如下

L1 = Line(x1, y1, x2, y2)  #传入两个xy坐标L1.getlen() #return出两个坐标点的直线距离

接下来直接上全代码解析 各位可以把类和方法分离出去

# 这里是导入依赖,需要这些库import mathimport sysimport timeimport torchimport win32apiimport win32conimport win32guifrom PyQt5.QtWidgets import QApplicationfrom pynput.mouse import Controllerimport mouse#这里这俩class就是文章上面说的那个传入两个坐标点,计算直线距离的class Point():    def __init__(self, x1, y1, x2, y2):        self.x1 = x1        self.y1 = y1        self.x2 = x2        self.y2 = y2class Line(Point):    def __init__(self, x1, y1, x2, y2):        super().__init__(x1, y1, x2, y2)    def getlen(self):        changdu = math.sqrt(math.pow((self.x1 - self.x2), 2) + math.pow((self.y1 - self.y2), 2))        return changdu#第一步:我们获取到某FPS游戏的窗口句柄hwnd = win32gui.FindWindow(None, "穿越火线")#这个方法是获取上面句柄窗口的窗口截图,用的是PyQt截图,有速度更快更好的方式的话可以换上#截图完毕后保存在根目录的cfbg.bmp文件def screen_record():    app = QApplication(sys.argv)    screen = QApplication.primaryScreen()    img = screen.grabWindow(hwnd).toImage()    img.save("cfbg.bmp")#这里就是调用我们那yolo模型来进行推理啦,我设置的是cuda,也就是英伟达的GPU,因为cpu太慢了。#如果自己的不能使用GPU推理的话把下面这两行改改,改成cpu的就可以了。device = torch.device("cuda")model = torch.hub.load('F:/yolov5-master', 'custom', 'F:/yolov5-master/yolov5n6.pt',                       source='local', force_reload=False)  # 加载本地模型# 这里是定义屏幕宽高[其实这俩就是游戏所对应的分辨率,比如:游戏里1920*1080这里就是1920*1080]game_width = 1024game_height = 768# 这边就是开始实时进行游戏窗口推理了#无限循环 -> 截取屏幕 -> 推理模型获取到每个敌人坐标 -> 计算每个敌人中心坐标 -> 挑选距离准星最近的敌人 -> 如果左键是按下状态则控制鼠标移动到敌人的身体或者头部(本文计算方式是移动到头部)while True:    # 截取屏幕    screen_record()    # 使用模型    model = model.to(device)    img = 'cfbg.bmp'     # 开始推理    results = model(img)    # 过滤模型    xmins = results.pandas().xyxy[0]['xmin']    ymins = results.pandas().xyxy[0]['ymin']    xmaxs = results.pandas().xyxy[0]['xmax']    ymaxs = results.pandas().xyxy[0]['ymax']    class_list = results.pandas().xyxy[0]['class']    confidences = results.pandas().xyxy[0]['confidence']    newlist = []    for xmin, ymin, xmax, ymax, classitem, conf in zip(xmins, ymins, xmaxs, ymaxs, class_list, confidences):        if classitem == 0 and conf > 0.5:            newlist.append([int(xmin), int(ymin), int(xmax), int(ymax), conf])    # 循环遍历每个敌人的坐标信息传入距离计算方法获取每个敌人距离鼠标的距离    if len(newlist) > 0:        # 存放距离数据        cdList = []        xyList = []        for listItem in newlist:            # 当前遍历的人物中心坐标            xindex = int(listItem[2] - (listItem[2] - listItem[0]) / 2)            yindex = int(listItem[3] - (listItem[3] - listItem[1]) / 2)            mouseModal = Controller()            x, y = mouseModal.position            L1 = Line(x, y, xindex, yindex)            # 获取到距离并且存放在cdList集合中            cdList.append(int(L1.getlen()))            xyList.append([xindex, yindex, listItem[0], listItem[1], listItem[2], listItem[3]])        # 这里就得到了距离最近的敌人位置了        minCD = min(cdList)        # 如果敌人距离鼠标坐标小于150则自动进行瞄准,这里可以改大改小,小的话跟枪会显得自然些        if minCD < 150:            for cdItem, xyItem in zip(cdList, xyList):                if cdItem == minCD:                    # 锁头算法:使用win32api获取左键按下状态,如果按下则开始自动跟枪                    if win32api.GetAsyncKeyState(0x01):                        # 控制鼠标移动到某个点:看不懂计算方式的话看文章下面讲解吧O(∩_∩)O                        win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, int(xyItem[0] - game_width // 2),int(xyItem[1] - (game_height - (xyItem[3] - xyItem[5])) // 2), 0, 0)                    break

好了,我们来讲解下这行代码win32api.mouse_event(鼠标行为:这里用的是MOVE相对移动, x坐标,y坐标, 0, 0) 第一个参数,先设定鼠标的行为:使用相对移动,为什么不用绝对移动呢,因为绝对移动在游戏里是无效的 第二个参数,x轴相对移动的距离:敌人x坐标 - (屏幕宽度 / 2) 第三个参数,y轴相对移动的距离:敌人y坐标 - (屏幕高度 - (敌人最大y坐标 - 敌人最小y坐标) / 2) 第一第二个参数相对来说比较好理解,但是可能有人对于第三个y的相对移动的计算方式有点懵,我画了个图,希望可以看明白。

实例图   图比较简陋 勿喷

 

在其他fps游戏,我们只需要修改窗口名称参数和分辨率参数即可。

以上就是Yolov5 FPS跟枪的源码解析和原理讲解了 感谢大家支持

我是毕加锁 期待你的关注

本文链接地址:https://www.jiuchutong.com/zhishi/297308.html 转载请保留说明!

上一篇:前端vscode必备插件推荐(墙裂推荐)(vscode写前端代码,如何运行)

下一篇:【注意力机制集锦】Channel Attention通道注意力网络结构、源码解读系列一(注意力机制cbam)

  • 抖音扣钱了在哪里查询(抖音app扣费是怎么找回)

    抖音扣钱了在哪里查询(抖音app扣费是怎么找回)

  • 苹果手机刚换的电池掉电特别快(苹果手机刚换的新电池电量掉的很快)

    苹果手机刚换的电池掉电特别快(苹果手机刚换的新电池电量掉的很快)

  • 戴尔g3散热风扇为啥有异响(戴尔g3散热风扇有异响)

    戴尔g3散热风扇为啥有异响(戴尔g3散热风扇有异响)

  • 苹果手机突然无法完成面容ID设置怎么办(苹果手机突然无SIM卡)

    苹果手机突然无法完成面容ID设置怎么办(苹果手机突然无SIM卡)

  • 怎样删除发现公众号(怎样删除微信里的发现公众号)

    怎样删除发现公众号(怎样删除微信里的发现公众号)

  • iphone7p换电池后遗症(iphone7p换电池后有什么影响)

    iphone7p换电池后遗症(iphone7p换电池后有什么影响)

  • 键盘进水会永久失灵吗(键盘进水会永久失效吗)

    键盘进水会永久失灵吗(键盘进水会永久失效吗)

  • 设备异常是什么意思(设备异常的处理方法)

    设备异常是什么意思(设备异常的处理方法)

  • 钉钉退出登录后再重登录可以吗(钉钉退出登录后别人还能看到吗)

    钉钉退出登录后再重登录可以吗(钉钉退出登录后别人还能看到吗)

  • 为什么新注册抖音没有观看量(为什么新注册抖音号没有最新特效)

    为什么新注册抖音没有观看量(为什么新注册抖音号没有最新特效)

  • 三星note8有几个版本(三星note8有几个系列)

    三星note8有几个版本(三星note8有几个系列)

  • 表格中数字显示是E+数字 怎么正常显示(表格中数字显示乱码)

    表格中数字显示是E+数字 怎么正常显示(表格中数字显示乱码)

  • 微信有人投诉可以查到是谁投诉的吗(别人微信投诉我,我会收到提示吗)

    微信有人投诉可以查到是谁投诉的吗(别人微信投诉我,我会收到提示吗)

  • 软件系统可以分为几类(软件系统可以分为什么)

    软件系统可以分为几类(软件系统可以分为什么)

  • 怎么关闭天猫精灵整点报时(怎么关闭天猫精灵蚂蚁森林提醒)

    怎么关闭天猫精灵整点报时(怎么关闭天猫精灵蚂蚁森林提醒)

  • iphone小圆点怎么设置(iphone小圆点怎么设置截屏)

    iphone小圆点怎么设置(iphone小圆点怎么设置截屏)

  • 怎么把软件下载到sd(怎么把软件下载的音乐保存到本地)

    怎么把软件下载到sd(怎么把软件下载的音乐保存到本地)

  • 空号半年怎么恢复使用(空号之后怎么办)

    空号半年怎么恢复使用(空号之后怎么办)

  • 华为mate30pro几时上市(华为mate30pro多久会降价)

    华为mate30pro几时上市(华为mate30pro多久会降价)

  • 三星i9152是什么型号(三星i9152参数配置)

    三星i9152是什么型号(三星i9152参数配置)

  • 饿了么定位不准怎么办(饿了么定位不准可以申诉吗)

    饿了么定位不准怎么办(饿了么定位不准可以申诉吗)

  • 小米6有语音助手叫什么(小米6手机语音播报助手设置)

    小米6有语音助手叫什么(小米6手机语音播报助手设置)

  • word全屏快捷键(word全屏快捷键ctrl加什么)

    word全屏快捷键(word全屏快捷键ctrl加什么)

  • 奥拉基库克山国家公园中的塞夫顿山,新西兰南岛 (© AWL Images/Danita Delimont)(奥克拉库克湾)

    奥拉基库克山国家公园中的塞夫顿山,新西兰南岛 (© AWL Images/Danita Delimont)(奥克拉库克湾)

  • resetFields重置初始值不生效的原因(reset fields)

    resetFields重置初始值不生效的原因(reset fields)

  • 向银行借款存入银行会引起
  • 人力资源公司可以接保安业务吗
  • 开具银行资信证明
  • 自己可以缴纳社保吗
  • 自然人合伙企业怎么交税
  • 新办商贸企业一般纳税人合同金额
  • 城建税如何核算成本
  • 公司代垫个税会计分录
  • 房地产企业的收入信息披露范围进一步扩大
  • 政府拨入企业的资金怎么入账
  • 存货营业外支出包括哪些
  • 承包外单位食堂会计怎么做账
  • 出售旧机床的账务处理
  • 发生的成本作为存货处理
  • 加油的时候可以开发票吗
  • 税控发票系统
  • 出口公司要交哪些税费
  • 非盈利组织一般纳税人应交的税
  • 享受固定资产一次性扣除政策
  • 违约金扣除吗
  • 个人账户付款到对公账户
  • 出口退税的计算题
  • 如何正确安装锯条
  • win10为什么毛病这么多
  • 财务费用借方记负数的原因
  • 外贸公司进出口权办理流程
  • 8款应用
  • php加载
  • u启动pe装机工具怎么重装系统
  • 存货包括生产成本,在资产负债表中表示
  • 委托银行收款的会计分录怎么写
  • 企业取得的搬迁补贴
  • 事业单位资产管理中存在的问题及整改措施
  • 超市购物增值税怎么算
  • 季度申报残保金怎么计算
  • 华为od机试真题2023 pdf
  • 2023年中国会有什么重大事件
  • 其他发票是什么意思
  • 劳务派遣小规模开票几个点
  • 个人出租非住房房产税
  • 分公司能给总公司担保吗
  • 售价金额核算法的优点有
  • sqlserver2019查看表
  • 将购入的原材料用于不动产在建工程
  • 生产企业免抵退税实例
  • 企业自产自用产品要确认收入吗
  • 余额百分比法计提坏账准备
  • 一般纳税人和小规模纳税人的区别
  • 季度利润表中的利润总额
  • 固定电话机用装电池吗
  • 专票红冲信息表填开显示红字信息表金额大于蓝色金额
  • 以融资租赁形式的车贷没还上可以拖车吗
  • 避险功能是什么意思
  • 工会经费结余可以结转下年吗
  • 冲销预付账款怎么填记账凭证
  • 一般纳税人购入固定资产进项抵扣
  • 库存现金存入银行
  • 事业单位财务报销制度和流程
  • 企业购买固定资产要交什么税
  • 待认证进项税额和待抵扣进项税额的区别
  • 软件开发过程中,一个错误发现的越晚
  • 汽车销售公司代购汽车有风险吗
  • 新成立的企业可以申请一般纳税人吗
  • 企业低值易耗品的摊销方法有( )
  • Windows环境下,在给文件命名时( )
  • auepuc.exe是什么软件
  • speedmgr.exe - speedmgr是什么进程 有什么用
  • STMGR.EXE - STMGR是什么进程
  • WIN7系统怎么安装 注音输入法
  • windows8网页版
  • 汤姆猫arcode
  • androidstudio git
  • unity3d模型怎么制作
  • bootstrap 多级菜单
  • jquery页面关闭事件
  • 纳税人谈感受
  • 最新设立税务师事务条件
  • 什么是跨地区经营汇总纳税企业
  • 国税纳税申报表打印
  • 新加坡国税局的电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设