1

我的应用程序从视频中读取帧(使用 pyglet),提取“条带”(即区域 - 全宽 1 到 6 条视频线),然后将每个条带(附加它)粘贴到稍后可以写出 *. .png 文件。

问题是 Pyglet GL 图像存储在图形内存中,因此 re 大小非常有限。我目前的笨拙解决方法是将要成为的 png 图像构建为小图块(即在 pyglet GL 大小限制内),当图块已满时,将其写入 *png 文件,将其作为 PIL 图像文件读回,然后将平铺图像粘贴/附加到最终的 PIL Image * png 文件中。

我认为应该可以将 pyglet-GL 条转换为 PIL 图像友好格式,并将其直接粘贴/附加到最终的 PIL 图像中,因此不需要瓷砖业务,这会使事情变得非常复杂并具有性能影响.

但是我找不到如何将条形数据转换为可以粘贴到 PIL 图像中的表单。已经看到许多请求重新转换为另一种方式,但我从未与牛群一起奔跑。

4

1 回答 1

2

我知道回答自己的问题是不好的形式,但我想出了一个可能对其他人有用的答案,所以在这里......

nextframe = source.get_next_video_frame() #
在 nextframe 时获取第一个视频帧!= None:# 在 EOF 时返回 None

#
### extract strip data, conver to PIL Image-friendly form, paste itn into travo Image
#
strip = nextframe.get_region(0, (vid_frame_h//2)-(strip_h//2), strip_w, strip_h) # Extract strip from this frame
strip_image_data = strip.get_image_data() 
strip_data = strip_image_data.get_data(strip_image_data.format, strip_image_data.pitch)
strip_Image = Image.frombuffer("RGB", (strip_w, strip_h), strip_data)
travo_image.paste(strip_Image, (0, travo_filled_to, strip_w, travo_filled_to + strip_h)) # paste strip image into travo_image 
travo_filled_to = travo_filled_to + strip_h     # update travo_filled pointer
nextframe = source.get_next_video_frame()       # get next video frame (EOF returns None)    

“而下一帧!=无:”结束

于 2009-05-04T18:21:26.930 回答