2018年4月10日 星期二

儲存 Gym Retro 的遊戲畫面


要在 Gym Retro 中輸出遊戲畫面,可以利用 step() 傳回的 Observation:
observation, reward, done, info = environment.step(action)

那是畫面 RGB 像素數據。用 reshape(1, -1) 把它由三維轉換成一維後,執行 astype('int8') 指令確保輸出為整數而不是浮點數,再以 tofile() 指令儲存:
pixelArray = observation.reshape(1, -1)
pixelArray.astype('int8').tofile('screen.raw')


這時的 screen.raw 是 RAW 格式,不是每台系統也能讀取。用 Photoshop 把它載入成 320 像素闊、224 像素高、3 原色頻道就可以,之後隨自己喜歡轉換成其他圖像格式。

還有另一個更簡單的方法,直接輸出成 JPG 格式或 PNG 格式:
import scipy.misc
scipy.misc.imsave('screen.jpg', observation)
scipy.misc.imsave('screen.png', observation)

沒有留言: