广告宣传册设计,seo网站推广工作内容,河东区腾讯网站建设,医学类app制作公司YOLOv5 是基于深度学习的目标检测算法#xff0c;优势是实时性强、能识别多目标、抗光影干扰#xff0c;适合 FPS 游戏中敌人、武器、爆头点等复杂目标识别。整体流程#xff1a;
二、第一步#xff1a;YOLOv5 游戏目标训练#xff08;关键前提#xff09;需先训练适…YOLOv5 是基于深度学习的目标检测算法优势是实时性强、能识别多目标、抗光影干扰适合 FPS 游戏中敌人、武器、爆头点等复杂目标识别。整体流程二、第一步YOLOv5 游戏目标训练关键前提需先训练适配游戏场景的 YOLOv5 模型识别敌人、爆头点等目标1. 数据准备截图采集在游戏中截取 100-500 张包含目标如敌人头部、身体的图片窗口化 / 无边框模式覆盖不同距离、光影、姿势。标注数据用 LabelImg 工具标注目标格式选择 YOLOtxt 文件标签定义如 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, pathbest.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(keylambda t: t[conf], reverseTrue) 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 模型需通过 进程通信 让 PythonYOLOv5将识别结果传递给易语言推荐两种方式方式 1共享内存高效实时推荐Python 将目标坐标写入 Windows 共享内存易语言读取共享内存数据延迟10ms适合 FPS 实时瞄准。1Python 端写入共享内存安装依赖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, 整数型方式 2Socket 网络通信跨设备 / 调试方便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坐标避免全屏偏移