我正在使用带有 Atari2600 Asteroids rom 的 openai gym retro 作为我的强化学习项目的基础,但在观察和渲染方面遇到了问题。更准确地说,观察要么只是带有子弹或陨石的特工/宇宙飞船。所以每一秒帧都只是宇宙飞船。
我的目标是使用 cv2 将这两个图像组合为一个图像。我有一个基本的观察包装器,它适用于观察,但对于渲染(调用 env.render())它仍然在做最初的问题。
class MemoryFrameWrapper(gym.ObservationWrapper):
def __init__(self, env):
super().__init__(env)
self._prevFrame = None
self._thereisprev = False
def observation(self, frame):
if self._thereisprev:
frame2 = cv2.addWeighted(self._prevFrame, 1, frame, 1, 0)
self._prevFrame = frame
else:
frame2 = frame
self._thereisprev = True
self._prevFrame = frame
return frame2
我需要使用另一个包装器来使帧通过记忆真正合并还是有其他解决方案?