news 2026/6/23 21:09:29

yolov5实现游戏图像识别与后续辅助功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
yolov5实现游戏图像识别与后续辅助功能

YOLOv5 是基于深度学习的目标检测算法,优势是实时性强、能识别多目标、抗光影干扰,适合 FPS 游戏中敌人、武器、爆头点等复杂目标识别。整体流程:​

二、第一步:YOLOv5 游戏目标训练(关键前提)​需先训练适配游戏场景的 YOLOv5 模型,识别敌人、爆头点等目标:​

1. 数据准备​

  • 截图采集:在游戏中截取 100-500 张包含目标(如敌人头部、身体)的图片(窗口化 / 无边框模式),覆盖不同距离、光影、姿势。​
  • 标注数据:用 LabelImg 工具标注目标,格式选择 YOLO(txt 文件),标签定义如 0:enemy_head(敌人头部)、1:enemy_body(敌人身体)。​
  • 数据集划分:按 8:1:1 拆分训练集、验证集、测试集,放入 YOLOv5 的 datasets/游戏名/ 目录。​

2. 配置 YOLOv5 训练参数​

  • 下载 YOLOv5 源码(GitHub 地址),安装依赖:pip install -r requirements.txt。​
  • 复制 models/yolov5s.yaml 为 yolov5_game.yaml,修改 nc: 2(目标类别数,如敌人头部 + 身体 = 2 类)。​
  • 复制 data/coco128.yaml 为 data/game.yaml,修改:​

3. 训练模型​

运行训练命令(按需调整 epochs 和 batch-size):​

​训练完成后,在 runs/train/exp/weights/ 中获取最佳模型 best.pt。​

4. 模型推理测试​

编写 Python 脚本测试识别效果,输出目标的屏幕坐标(x,y)、置信度:​

# detect_game.py import cv2 import torch import numpy as np # 加载YOLOv5模型 model = torch.hub.load('ultralytics/yolov5', 'custom', path='best.pt') # 替换为你的模型路径 model.conf = 0.5 # 置信度阈值(只保留置信度≥0.5的目标) def detect_enemy(screen_img): """ 输入:屏幕捕获的图像(numpy数组) 输出:识别到的目标列表 [{'x':中心x, 'y':中心y, 'conf':置信度, 'cls':类别}] """ results = model(screen_img) targets = [] # 解析识别结果 for *box, conf, cls in results.xyxy[0]: x1, y1, x2, y2 = map(int, box) center_x = (x1 + x2) // 2 # 目标中心x坐标 center_y = (y1 + y2) // 2 # 目标中心y坐标 targets.append({ 'x': center_x, 'y': center_y, 'conf': float(conf), 'cls': int(cls) }) # 按置信度排序(优先锁定最清晰的目标) targets.sort(key=lambda t: t['conf'], reverse=True) return targets # 测试:捕获屏幕并识别(需安装mss用于屏幕捕获) from mss import mss sct = mss() monitor = {"top": 0, "left": 0, "width": 1920, "height": 1080} # 游戏窗口坐标范围 while True: # 捕获屏幕画面 img = np.array(sct.grab(monitor)) img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR) # 转换颜色空间 # 识别目标 targets = detect_enemy(img) if targets: print("识别到目标:", targets[0]) # 输出最优先目标 # 按q退出 if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows()

三、第二步:易语言调用 YOLOv5 识别结果​

易语言无法直接运行 PyTorch 模型,需通过 进程通信 让 Python(YOLOv5)将识别结果传递给易语言,推荐两种方式:​

方式 1:共享内存(高效实时,推荐)​

Python 将目标坐标写入 Windows 共享内存,易语言读取共享内存数据,延迟<10ms,适合 FPS 实时瞄准。​

(1)Python 端:写入共享内存​

安装依赖:pip install pywin32​ ​while True:​ img = np.array(sct.grab(monitor))​ img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)​ targets = detect_enemy(img) # 调用第一步的识别函数​ write_target_to_mem(targets[0] if targets else None)​ if cv2.waitKey(1) & 0xFF == ord('q'):​ break​ ​ # 关闭资源​ win32file.UnmapViewOfFile(p_buf)​ win32file.CloseHandle(h_map_file)​ ​

(2)易语言端:读取共享内存​

通过 Windows API 读取共享内存数据,核心代码:​

​.支持库 spec​

​// 声明共享内存相关API​

.DLL命令 CreateFileMappingA, 整数型, "kernel32.dll", "CreateFileMappingA"​

.参数 hFile, 整数型​

.参数 lpFileMappingAttributes, 整数型​

.参数 flProtect, 整数型​

.参数 dwMaximumSizeHigh, 整数型​

.参数 dwMaximumSizeLow, 整数型​

.参数 lpName, 文本型​

​.DLL命令 MapViewOfFile, 整数型, "kernel32.dll", "MapViewOfFile"​

.参数 hFileMappingObject, 整数型​

.参数 dwDesiredAccess, 整数型​

.参数 dwFileOffsetHigh, 整数型​

.参数 dwFileOffsetLow, 整数型​

.参数 dwNumberOfBytesToMap, 整数型​

​.DLL命令 CopyMemory, 整数型, "kernel32.dll", "RtlMoveMemory"​

.参数 Destination, 整数型​

.参数 Source, 整数型​

.参数 Length, 整数型​

​.DLL命令 UnmapViewOfFile, 逻辑型, "kernel32.dll", "UnmapViewOfFile"​

.参数 lpBaseAddress, 整数型​

​方式 2:Socket 网络通信(跨设备 / 调试方便)​

Python 作为服务端,易语言作为客户端,通过 TCP 发送识别结果,适合调试或非实时场景,核心代码简化:​

  • Python 端(TCP 服务端):用 socket 库监听端口,持续发送目标 JSON 数据。​
  • 易语言端(TCP 客户端):用 网络通讯支持库 连接服务端,接收并解析 JSON。​

四、第三步:易语言衔接自动化操作(瞄准 / 射击)​

结合 YOLOv5 识别到的目标坐标,实现平滑瞄准和射击,核心代码:​

​.版本 2​

.支持库 eAPI​

​// 声明鼠标操作API(同之前代码)​

.DLL命令 SetCursorPos, 逻辑型, "user32.dll", "SetCursorPos"​

.参数 X, 整数型​

.参数 Y, 整数型​

​.DLL命令 mouse_event, 逻辑型, "user32.dll", "mouse_event"​

.参数 dwFlags, 整数型​

.参数 dx, 整数型​

.参数 dy, 整数型​

.参数 cButtons, 整数型​

.参数 dwExtraInfo, 整数型​

​.常量 MOUSEEVENTF_LEFTDOWN, "2"​

.常量 MOUSEEVENTF_LEFTUP, "4"​

​// 全局变量​

.全局变量 脚本开关, 逻辑型, , "假"​

.全局变量 游戏窗口偏移X, 整数型 // 游戏窗口左上角X坐标(避免全屏偏移)​

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 6:03:10

【稀缺资料】:Dify重排序系统调优的3个黄金法则与实测数据验证

第一章:Dify重排序系统的核心机制解析Dify的重排序系统是其检索增强生成(RAG)流程中的关键组件,负责对初始检索结果进行语义层面的二次排序,以提升最终输出的相关性与准确性。该机制通过深度语义理解模型评估查询与文档…

作者头像 李华
网站建设 2026/6/23 19:45:17

【混合检索的Dify查询优化秘籍】:揭秘提升查询效率5倍的核心策略

第一章:混合检索的 Dify 查询优化概述 在现代 AI 应用开发中,Dify 作为一款支持可视化编排与模型集成的低代码平台,广泛应用于智能问答、知识库检索等场景。随着业务数据规模的增长,单一的关键词匹配或向量检索方式已难以满足精准…

作者头像 李华
网站建设 2026/6/22 22:55:15

告别 “自动化孤岛”,解锁实验室真正智能

在追求高效与精准的今天,自动化实验室早已不是新鲜概念。然而,机械臂与智能仪器的堆砌,往往陷入 “各自为战” 的困境:设备联通不畅、数据孤立无援、流程编排复杂、单点故障易引发全线瘫痪。汇像科技深耕行业多年,专为…

作者头像 李华
网站建设 2026/6/23 19:46:08

Dify版本历史管理的秘密武器:实现安全、可控、可追溯的回滚体系

第一章:Dify工作流版本回滚的核心价值在现代AI应用开发中,工作流的稳定性与可维护性至关重要。Dify作为低代码AI工作流编排平台,提供了强大的版本管理能力,其中版本回滚机制是保障系统可靠运行的关键功能之一。通过精确控制工作流…

作者头像 李华
网站建设 2026/6/23 19:42:56

13.长视频和短视频的目标追踪(yolo_insightface模型)

1.视频追踪原理视频追踪原理如下:2.环境搭建该模型的环境搭建其实很简单,具体步骤如下:2.1 insightface模型环境搭建步骤 1:创建虚拟环境(推荐,避免依赖冲突)建议用conda(Anaconda/M…

作者头像 李华
网站建设 2026/6/23 6:53:03

前端开发必备:JavaScript 核心事件详解与实战

在前端开发中,JavaScript 事件是实现页面交互的核心 —— 从点击按钮触发弹窗,到滚动页面加载数据,再到输入框实时校验,几乎所有用户与页面的互动都离不开事件机制。本文将梳理 JavaScript 中最常用的几类事件,结合实战…

作者头像 李华