基于yolov7的FPS游戏(csgo,cf,cfhd)自瞄开发

article/2025/8/18 18:36:21

1.训练yolo识别人物导出pt文件

链接: yolov7训练自己的数据集-gpu版

2.使用win32进行屏幕截图和鼠标移动
3.使用导出的pt文件进行推理(pt文件将在完善后发出)
屏幕截图获取屏幕->检测目标的坐标->取中心点->计算距离获取最近的敌人坐标->移动鼠标到中心点
数据集整理后上传

在这里插入图片描述

鼠标移动到目标传入两个参数分别为鼠标距离人物中心点的x,y坐标距离

import win32gui, win32ui, win32con, win32api
m = PyMouse()
class Shu:def move(self,x,y):self.x=xself.y=ywin32api.mouse_event(win32con.MOUSEEVENTF_MOVE,self.x, self.y)   #鼠标移动到(x,y)位置#m.click(self.x, self.y)  #移动并且在(x,y)位置左击

利用pt文件推理过程

# 这里是导入依赖,需要这些库
import ctypes
import math
import time
import mss.tools
import torch
from pynput.mouse import Controller
from shubiao import Shuimport win32gui, win32ui, win32con, win32api
s=Shu()
# 传入两个坐标点,计算直线距离的
class Point:def __init__(self, x1, y1, x2, y2):self.x1 = x1self.y1 = y1self.x2 = x2self.y2 = y2class Line(Point):def __init__(self, x1, y1, x2, y2):super().__init__(x1, y1, x2, y2)def getlen(self):return math.sqrt(math.pow((self.x1 - self.x2), 2) + math.pow((self.y1 - self.y2), 2))# 加载本地模型
device = torch.device("cuda")
model = torch.hub.load('D:/AI/yolov7-main', 'custom','D:/AI/yolov7-main/weights/best.pt',source='local', force_reload=False)print(11111)
# 定义屏幕宽高
game_width = 2560
game_height = 1440rect = (0, 0, game_width, game_height)
m = mss.mss()
mt = mss.tools# 加载罗技鼠标驱动,驱动资源来自互联网# 截图保存def window_capture(filename):   #此函数用于截图hwnd = 0  # 窗口的编号,0号表示当前活跃窗口# 根据窗口句柄获取窗口的设备上下文DC(Divice Context)hwndDC = win32gui.GetWindowDC(hwnd)# 根据窗口的DC获取mfcDCmfcDC = win32ui.CreateDCFromHandle(hwndDC)# mfcDC创建可兼容的DCsaveDC = mfcDC.CreateCompatibleDC()# 创建bigmap准备保存图片saveBitMap = win32ui.CreateBitmap()# 获取监控器信息MoniterDev = win32api.EnumDisplayMonitors(None, None)w = MoniterDev[0][2][2]h = MoniterDev[0][2][3]# print w,h   #图片大小# 为bitmap开辟空间saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)# 高度saveDC,将截图保存到saveBitmap中saveDC.SelectObject(saveBitMap)# 截取从左上角(0,0)长宽为(w,h)的图片saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)saveBitMap.SaveBitmapFile(saveDC,filename)
# 这边就是开始实时进行游戏窗口推理了
# 无限循环 -> 截取屏幕 -> 推理模型获取到每个敌人坐标 -> 计算每个敌人中心坐标 -> 挑选距离准星最近的敌人 -> 则控制鼠标移动到敌人的身体或者头部
while True:print(22222)#a=time.time()#print(222)# 截取屏幕#screen_record()window_capture('myProjects/cfbg.png')# 使用模型model = model.to(device)# 开始推理results = model('myProjects/cfbg.png')# 过滤模型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:#print('newlist:', newlist)# 存放距离数据cdList = []xyList = []for listItem in newlist:# 当前遍历的人物中心坐标xindex = int(listItem[2] - (listItem[2] - listItem[0]) / 2)print(xindex)yindex = int(listItem[3] - (listItem[3] - listItem[1]) /2)print(yindex)mouseModal = Controller()x, y = mouseModal.positionL1 = Line(x, y, xindex, yindex)#print(int(L1.getlen()), x, y, xindex, yindex)# 获取到距离并且存放在cdList集合中cdList.append(int(L1.getlen()))xyList.append([xindex, yindex, x, y])# 这里就得到了距离最近的敌人位置了minCD = min(cdList)# 如果敌人距离鼠标坐标小于150则自动进行瞄准,这里可以改大改小,小的话跟枪会显得自然些if minCD<150:    #建议删除此行开挂就要暴力 1111111111111111111111111111111111111111111111111111删除此行for cdItem, xyItem in zip(cdList, xyList):if cdItem == minCD:#print(cdItem, xyItem)print(int(xyItem[0] - xyItem[2]), int(xyItem[1] - xyItem[3]))s.move(int(xyItem[0] - xyItem[2]), int(xyItem[1] - xyItem[3]))#传入鼠标坐标和目标中心坐标的距离break

http://chatgpt.dhexx.cn/article/17pj2FYO.shtml

相关文章

穿越火线(CF) AI 自瞄 代码 权重 数据集 亲测可用(结尾有资源)

初衷 本人热衷玩CF&#xff0c;同时为一名程序员&#xff0c;近期听说AI霸占FPS游戏&#xff0c;本着学习的态度&#xff0c;特来测试 不喜欢看过程的小伙伴直接看最下面 模型 采用yolov5模型架构 对过程感兴趣的小伙伴下文自行学习 https://zhuanlan.zhihu.com/p/17212138…

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

前期提要&#xff1a; 本文章仅供技术讨论使用。 关于如何通过YOLOV5去检测到王者中的敌方人物&#xff0c;在网上有很多相关的文章和教学视频我在这里就不过多的阐述&#xff0c;本篇文章主要讲的是在实现中比较难处理的一些技术点&#xff1a;如何获取高刷新率的手机屏幕、…

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出现以下页面说明设置成功。…