Я работаю с игрой на основе Pygame. В резюме - мне нужно запустить его в режиме без головы. Сейчас я использую:
os.environ['SDL_VIDEODRIVER'] = 'dummy'
И проблема в том, что я не могу перенести экран из игры в массив NumPy. Единственное решение , которое я нашел, на самом деле работает, но только с сохранением изображения в файл, что совершенно не соответствует действительности - но, возможно, это подсказка. Я пробовал что-то вроде разбора поверхности на строку:
pil_string_image = pygame.image.tostring(screen,"RGBA",False)
im = Image.frombytes("RGBA",(400, 400), pil_string_image)
cv2.imshow('screen', np.asarray(im))
но в итоге у меня только серый экран и все.
Причина в том, что мне нужно подготовить игру работать в Collab или в текстовой среде, потому что я делаю вещи ML, используя игровой экран.
Есть ли способ правильно сделать экран? Или, может быть, я мог бы запустить безголовый режим другим способом, который позволяет мне делать снимки просто так?
pygame.surfarray.array3d(pygame.display.get_surface())