AI打游戏-贰(收集训练图片)

发布时间 2023-09-13 08:42:02作者: 言午日尧耳总

目标

  • 使用录屏软件将游戏录制成视频
  • 使用代码,每几秒将视频帧保存成图片,作为后续训练集

步骤

录制游戏视频

安装录屏软件OBS

  • 可以用任意录屏软件,如果没有的话可以下载开源的录屏软件"OBS Studio"
  • 直接上OBS Studio 官网,下载对应平台版本
  • 双击安装,一直下一步到安装完成

OBS设置

  • 使用"管理员"启动OBS(这步很重要!!!否则有可能无法获取到游戏窗口)
  • 启动游戏
  • 添加场景 > 添加来源 > 游戏源 > 采集特定窗口 > 窗口选择"Tap Ninja"
  • 画布中显示游戏画面即为成功

录制视频

  • 点击右下角的"开始录制"
  • 录制过程中同时玩这个游戏,增加样本的丰富程度
  • 录制10-30分钟的视频

视频帧保存为图片

  • 使用opencv-python读取视频
  • 每隔3秒取一个视频帧,保存成本地图片

代码环境

  • 启动一个python项目,python版本>=3.8
  • 安装opencv
# 安装opencv
pip install opencv-python
# 使用阿里云镜像安装
pip install -i https://mirrors.aliyun.com/pypi/simple/  opencv-python

截图

  • 使用opencv截图
import cv2
import os


def build_dir(dir_path):
    """
    创建目录(当目录不存在时)
    """
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)


def main(video_path, image_dir, pick_interval_seconds):
    # 打开视频文件
    cap = cv2.VideoCapture(video_path)

    # 获取每秒帧数
    fps = cap.get(cv2.CAP_PROP_FPS)
    pick_number = int(fps * pick_interval_seconds)

    frame_index = 0
    while cap.isOpened():
        # 读取帧
        ret, frame = cap.read()
        if not ret:
            break

        # 帧索引可以被选取号整除时,保存这张图片
        if frame_index % pick_number == 0:
            # 拼接图片路径
            image_path = os.path.join(image_dir, f"{frame_index}.jpg")
            # 保存图片
            cv2.imwrite(image_path, frame)
            print(f"截图已保存: {image_path}")

        frame_index += 1

    print("截图已经完成")


if __name__ == "__main__":
    # 视频地址
    video_path = "E:\\ai-play-game\\2023-09-12 23-27-51.mp4"
    # 图片存放路径
    image_dir = "E:\\ai-play-game\\images"
    # 视频帧截取间隔秒数
    pick_interval_seconds = 3

    build_dir(image_dir)
    main(video_path, image_dir, pick_interval_seconds)

本节结果

  • 得到一段游戏视频文件
  • 200~300张视频帧截图图片