gpt4 book ai didi

deep-learning - OpenAI健身房: How to get pixels in CartPole-v0

转载 作者:行者123 更新时间:2023-12-02 20:00:37 26 4
gpt4 key购买 nike

我想在不打开渲染窗口的情况下访问 OpenAIgym CartPole-v0 环境中的原始像素。我该怎么做?

示例代码:

import gym
env = gym.make("CartPole-v0")
env.reset()
img = env.render(mode='rgb_array', close=True) # Returns None
print(img)
img = env.render(mode='rgb_array', close=False)
# Opens annoying window, but gives me the array that I want
print(img.shape)
PS。我很难找到 OpenAI Gym 的良好文档。是只有我这样,还是根本不存在?

编辑:我不需要打开渲染视频。

最佳答案

我对此感到好奇,所以我开始研究源代码,这就是我发现的。

Open AI 使用 pyglet 来显示窗口和动画。

为了显示动画,所有内容都绘制到窗口上然后渲染。

然后 pyglet 将显示的内容存储到缓冲区中。

如何在开放人工智能中编写代码的虚拟版本

import pyglet
from pyglet.gl import *
import numpy as np

display = pyglet.canvas.get_display()
screen = display.get_screens()
config = screen[0].get_best_config()

pyglet.window.Window(width=500, height=500, display=display, config=config)

# draw what ever you want

#get image from the buffer

buffer = pyglet.image.get_buffer_manager().get_color_buffer()

image_data=buffer.get_image_data()

arr = np.frombuffer(image_data.get_data(),dtype=np.uint8)

print(arr)
print(arr.shape)

输出:[0 0 0 ... 0 0 0]
(1000000,)

所以基本上我们得到的每个图像都来自窗口上显示的缓冲区。因此,如果我们不在窗口上绘制任何内容,我们就得不到图像,因此需要窗口来获取图像。所以你需要找到一种方法,使窗口不显示,但它的值存储在缓冲区中。我知道这不是您想要的,但我希望它可以引导您找到解决方案。

关于deep-learning - OpenAI健身房: How to get pixels in CartPole-v0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43536034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com