Как объединить два кадра? Мерцающий вопрос наблюдения в openai тренажерном зале ретро - PullRequest
0 голосов
/ 17 апреля 2020

Я использую openai тренажерный зал ретро с Atari2600 Asteroids rom в качестве основы для моего проекта обучения подкрепления и столкнулся с проблемой наблюдений и визуализации. Точнее, наблюдение - это либо просто агент / космический корабль с пулями , либо метеориты . Поэтому каждый второй кадр - это просто космический корабль.

Моя цель - объединить два изображения, которые будут использоваться как одно изображение, с использованием cv2. У меня была базовая c оболочка наблюдения, которая работала для наблюдений, но для рендеринга (вызова 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

Есть ли другая оболочка, которую мне нужно использовать, чтобы сделать кадры действительно объединенными путем запоминания или есть другое решение?

...