目標
- 使用錄屏軟體將遊戲錄製成影片
- 使用程式碼,每幾秒將影片幀儲存成圖片,作為後續訓練集
步驟
錄製遊戲影片
安裝錄屏軟體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張影片幀截圖圖片