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

这篇具有很好参考价值的文章主要介绍了基于yolov7的FPS游戏(csgo,cf,cfhd)自瞄开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

yolov 游戏,游戏,python,深度学习,人工智能

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

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

利用pt文件推理过程文章来源地址https://www.toymoban.com/news/detail-523806.html

# 这里是导入依赖,需要这些库
import ctypes
import math
import time
import mss.tools
import torch
from pynput.mouse import Controller
from shubiao import Shu

import win32gui, win32ui, win32con, win32api
s=Shu()
# 传入两个坐标点,计算直线距离的
class Point:
    def __init__(self, x1, y1, x2, y2):
        self.x1 = x1
        self.y1 = y1
        self.x2 = x2
        self.y2 = y2


class 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 = 1440

rect = (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获取mfcDC
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    # mfcDC创建可兼容的DC
    saveDC = 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.position
            L1 = 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

到了这里,关于基于yolov7的FPS游戏(csgo,cf,cfhd)自瞄开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于YOLOV7的openpose人体姿态检测识别,FPS可以达到“较高”的效果

    前不久yolov7(原yolov4团队)在yolov6(美团)开源不到两周的时间也更新了, 如下图所示,yolov7效果比前面的版本确实牛逼,在精度相同的情况下,速度上面提升了一大截,但是这是在比较好的设备上面; YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能

    2024年02月05日
    浏览(24)
  • yolov5识别cf火线敌人(FPS类的AI瞄准)详细教程二

    以下代码只可用于私服,不可商用,代码完全开源,主要用于学习, 上篇文章已经写了yolov5的基础用法,这篇文章主要是将我对yolov5模型的修改,用于实现对屏幕进行实时监测识别并将鼠标移动到人体指定位置的功能,改动的代码不是很多,我尽量说的详细一些供大家学习。

    2024年02月09日
    浏览(14)
  • yolov5识别cf火线敌人(FPS类的AI瞄准)详细教程一

    以下代码只可用于私服,不可商用,代码完全开源, 因为自己的研究方向也是深度学习方向,而且平时闲的时候还喜欢玩会cf火线等枪战,就想着找一个大模型做一个对游戏敌人的识别的功能,一切实现之后就想把自己的心得写出来,我打算分俩个教程分别细述整个学习以及

    2024年02月11日
    浏览(18)
  • yolov5-计算fps(新加入:4. 记录运行B导yolov7-tiny后计算fps的方法)

    参考自:睿智的目标检测21——如何调用摄像头进行目标检测 FPS简单来理解就是图像的 刷新频率 ,也就是 每秒多少帧 假设目标检测网络处理1帧要0.02s,此时FPS就是50 #---------------------------分割线-------------------------------- # 也就是说在计算FPS的时候,会强调 每秒 、 每张 。因

    2024年02月11日
    浏览(18)
  • 基于YOLOv7开发构建MSTAR雷达影像目标检测系统

    MSTAR(Moving and Stationary Target Acquisition and Recognition)数据集是一个基于合成孔径雷达(Synthetic Aperture Radar,SAR)图像的目标检测和识别数据集。它是针对目标检测、机器学习和模式识别算法的研究和评估而设计的。 MSTAR数据集由美国海军研究实验室(Naval Research Laboratory,NRL)

    2024年02月14日
    浏览(18)
  • Yolov5使用Ai实现FPS游戏自动瞄准

    自动瞄准技术已经成为了许多FPS游戏玩家们追求的终极目标之一。近年来,随着深度学习技术的发展,越来越多的自动瞄准工具开始出现,其中最为流行且表现出色的莫过于 Yolo 系列目标检测算法,特别是 Yolov5。本文将介绍如何使用 Yolov5 算法实现 FPS 游戏自动瞄准。 xy坐标

    2024年02月09日
    浏览(20)
  • 穿越火线(CF) AI 自瞄 代码 权重 数据集 亲测可用(结尾有资源)

    本人热衷玩CF,同时为一名程序员,近期听说AI霸占FPS游戏,本着学习的态度,特来测试 不喜欢看过程的小伙伴直接看最下面 采用yolov5模型架构 对过程感兴趣的小伙伴下文自行学习 https://zhuanlan.zhihu.com/p/172121380 内部代码是根据游戏特色改动过的,大致结构如下 权重是通过

    2024年02月05日
    浏览(34)
  • 浅谈非内存对抗类和AI自瞄类FPS作弊程序原理及常用反反作弊措施与反作弊应对手段(中)

    往期文章: 浅谈非内存对抗类和AI自瞄类FPS作弊程序原理及常用反反作弊措施与反作弊应对手段(上)         Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于

    2024年04月13日
    浏览(16)
  • Unity开发一个FPS游戏之二

    在之前的文章中,我介绍了如何开发一个FPS游戏,添加一个第一人称的主角,并设置武器。现在我将继续完善这个游戏,打算添加敌人,实现其智能寻找玩家并进行对抗。完成的效果如下: fps_enemy_demo   首先是设计敌人,我们可以在网上找到一些好的免费素材,例如在Unity商

    2024年03月17日
    浏览(24)
  • [YOLOv7]基于YOLOv7的水果识别系统(源码&部署教程)

    [YOLOv7]基于YOLOv7的水果识别系统(源码&部署教程)_哔哩哔哩_bilibili 如果不懂yolo格式数据集是什么样子的,建议先学习一下。大部分CVer都会推荐用labelImg进行数据的标注,我也不例外,推荐大家用labelImg进行数据标注。不过这里我不再详细介绍如何使用labelImg,网上有很多的教

    2024年02月05日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包