目标
- 使用录屏软件将游戏录制成视频
- 使用代码,每几秒将视频帧保存成图片,作为后续训练集
步骤
录制游戏视频
安装录屏软件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
截图
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张视频帧截图图片
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。