所以这里的想法非常简单。我想通过BytesIO流和PIL从raspberry pi相机中获取并保存图片,这样我就可以在保存之前绘制到图像上。下面的代码很简单,但是在程序完成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()
任何帮助将不胜感激, NIK
答案 0 :(得分:-1)
代码的问题不是在每次捕获之前或读取捕获的图像之后寻求内存中文件对象的启动。但是,无论如何,使用io.BytesIO
和PIL.Image
都是不必要的复杂。您可以直接捕获到文件:
#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
import picamera
def main():
with picamera.PiCamera() as camera:
camera.resolution = (1920, 1080)
camera.color_effects = (128, 128)
for n in range(10):
camera.capture('{0:04d}.jpg'.format(n), use_video_port=True)
print(n)
if __name__ == '__main__':
main()
这里我在PiCamera
语句中使用了with
对象,以确保在完成相机操作后正确关闭/释放此资源。