Мне было любопытно то же самое, поэтому я начал изучать исходный код, и вот что я нашел.
Open AI использует пиглет для отображения окна и анимации.
Для показа анимации все рисуется в окне, а затем визуализируется.
Затем пиглет сохраняет то, что отображается, в буфер.
Фиктивная версия написания кода в открытом ИИ
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,)
поэтому в основном каждое изображение, которое мы получаем, берется из буфера того, что отображается в окне. Итак, если мы ничего не рисуем в окне, мы не получаем изображения, поэтому это окно требуется для получения изображения. поэтому вам нужно найти способ, чтобы окна не отображались, но их значения сохранялись в буфере. Я знаю, что это не то, что вы хотели, но я надеюсь, что это может привести вас к решению.
person
Maunish Dave
schedule
01.10.2020
xvfb
, для перенаправления ваших видеокадров в фиктивный приемник. - person zaxliu   schedule 07.06.2017