【发布时间】:2017-08-31 14:25:17
【问题描述】:
所以这里的想法很简单。我想通过 BytesIO 流和 PIL 从树莓派相机中拍摄和保存图片,以便在保存之前在图像上绘制。下面的代码很简单,但是程序完成10张图片后,保存的所有图片都是一样的。
我确信有一种更简单的方法可以做到这一点,但我想使用 BytesIO 流来尝试了解更多信息。
import picamera, io
from PIL import Image
camera = picamera.PiCamera()
camera.resolution = (1920, 1080)
camera.color_effects = (128, 128)
stream = io.BytesIO()
for n in range(10):
camera.capture(stream, "jpeg", use_video_port=True)
stream.seek(0)
im = Image.open(stream)
im.save(str(n)+".jpg")
print n
stream.close()
任何帮助将不胜感激, 尼克
【问题讨论】:
-
捕获后将文件指针设置为偏移量0。然后加载图像,在图像数据之后设置文件指针。然后,您捕获在偏移量 0 处图像的图像数据之后写入的下一张图像。因此,您实际上只将第一张图像存储在偏移量 0 处,并将每个后续图像存储在第一张图像之后的偏移量处。
-
看来您正在重新编码一个不是无损过程的 jpeg 图像。只需保存来自
BytesIO对象的数据即可。 -
@BlackJack 那么你建议我怎么做呢?我明白你的意思和问题是什么,但不知道如何解决它
标签: python python-imaging-library bytesio