首页 > 解决方案 > 如何合并两帧?openai 健身房复古中闪烁的观察问题

问题描述

我正在使用带有 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

我需要使用另一个包装器来使帧通过记忆真正合并还是有其他解决方案?

标签: pythontensorflowreinforcement-learningopenai-gymtensorflow-agents

解决方案


推荐阅读