Скриншот фильма Pygame
Я пытаюсь сделать скриншот каждого кадра фильма для другой обработки. Однако, когда я запускаю это, все, что я получаю, это распечатывается новая строка. После того, как я убил программу любым способом, я получаю ошибку сегментации (ядро сброшено)
Почему происходит ошибка сегментации? Мой код или пигмент или что-то еще?
Почему я не получаю текст из программы?
Использование Python 2.7, Ubuntu
import sys
import os
if sys.platform == 'win32' and sys.getwindowsversion()[0] >= 5:
os.environ['SDL_VIDEODRIVER'] = 'windib'
import pygame
pygame.init()
pygame.mixer.quit()
movie = pygame.movie.Movie(sys.argv[1])
screen = pygame.display.set_mode(movie.get_size())
movie.set_display(screen)
movie.play()
while movie.get_busy():
print pygame.image.tostring(screen, 'RGB', False)
if pygame.event.peek(pygame.QUIT):
pygame.quit()
exit()
pygame.event.clear()
movie.stop()
pygame.quit()
Это мой первый вопрос, поэтому, пожалуйста, скажите, если я что-то пропустил:)
1 ответ
Я считаю, что, читая документы, это фактически "бросает" фильм на вашу поверхность. Так что в Pygame вы можете сохранять поверхности. Предполагая, что это должно быть возможно использовать pygame.image.save(screen, "screenshot.bmp")
Это потому, что отображение принимает атрибуты поверхности. Таким образом, в документации Pygame под изображением вы можете найти функцию save
как я использовал выше. И пока вы сначала приостанавливаете фильм (чтобы получить точное изображение), у вас должен быть скриншот фильма.
Ура!