【问题标题】:Pygame movie screenshotPygame电影截图
【发布时间】:2014-03-10 23:04:25
【问题描述】:

我正在尝试截取电影的每一帧以进行其他处理。 但是,当我运行它时,我得到的只是打印出的换行符。 在我以任何方式杀死程序后,我得到一个分段错误(核心转储)

为什么会发生分段错误?我的代码或 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)我不确定你的 QUIT 事件是否真的打破了你的循环。它会退出 pygame,但由于您仍处于循环中,当您尝试运行 pygame 方法时,它会给您一个错误。 2)你有两次pygame.quit()。 3) exit() 是否意味着sys.exit()
  • 我相信 exit() 和 sys.exit() 是可以互换的,不是吗?
  • 这不是我的理解 - 但后来我只看到了这个帖子:stackoverflow.com/questions/6501121/…

标签: python pygame screenshot movie


【解决方案1】:

我相信,从文档中阅读,它实际上将电影“粘贴”到您的表面。所以在 pygame 中你可以保存表面。假设这应该可以使用pygame.image.save(screen, "screenshot.bmp")

这是因为显示采用表面的属性。因此,在图像下的 pygame 文档中,您可以找到我上面使用的函数 save。只要您先暂停电影(以获得准确的图像),您就应该拥有电影的屏幕截图。

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2012-06-24
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多