将图像插入帧缓冲区并将帧缓冲区写入 png

Posted

技术标签:

【中文标题】将图像插入帧缓冲区并将帧缓冲区写入 png【英文标题】:Insert image into a framebuffer and write framebuffer to png 【发布时间】:2014-06-15 04:58:03 【问题描述】:

我是 Python 新手,一直在全职学习这门语言。我希望能够:

png 读入视频帧缓冲区并在窗口中显示 读取-修改-写入单个像素 将视频帧缓冲区写回png

看起来很简单,我已经能够使用pyglet 完成部分工作。我已经阅读了数百份文件,似乎我越来越困惑。

有人能指出正确的方向吗?

【问题讨论】:

您能具体告诉我们您遇到了什么问题吗? 我修改了标题,希望这更符合您的要求。 请edit your question 添加更多详细信息,因为 cmets 系统不是为此设计的。 下面允许我加载一个 png,读取一个像素,但这是我所得到的 'import png import pyglet # use png p = [(255,128,0, 0,255,0 , 0,0,255), (128,0,0, 0,128,0, 0,0,128)] f = open('swatch.png', 'wb') w = png.Writer(3, 2) w.write( f, p) f.close() 窗口 = pyglet.window.Window() 图像 = pyglet.resource.image('swatch.png') y=1 x=0 pix = image.get_region(x,y,1, 1).get_image_data().get_data("RGB", 3) R1 = ord(pix[0]) G1 = ord(pix[1]) B1 = ord(pix[2]) 打印 x, R1, G1, B1 @window.event def on_draw(): window.clear() image.blit(0,0) pyglet.app.run()' 【参考方案1】:

作为第一个提示,我会检查这些功能:

捕捉视频帧:pyglet.image.get_texture() (这里的文档:http://pyglet.org/doc/api/pyglet.media.Player-class.html

保存 png :pyglet.image.get_buffer_manager().get_color_buffer().save(filename)

要使用像素,当您使用纹理时,pyglet.image.ImageData 类应该是要查看的 pyglet 类。 (此处的 API 文档:http://pyglet.org/doc/api/pyglet.image.ImageData-class.html#format)

【讨论】:

以上是关于将图像插入帧缓冲区并将帧缓冲区写入 png的主要内容,如果未能解决你的问题,请参考以下文章

渲染到窗口帧缓冲区和 FBO 以保存全尺寸纹理图像

截取嵌入式 Linux 帧缓冲区的屏幕截图

从帧缓冲区对象读取时,OpenGL 纹理坐标是相反的

FBGrab 提供黑色 .png 图像

空白图像(帧缓冲区)

如何将视频帧保存到缓冲区中?