Raspberry Pi Camera自动捕获python脚本

时间:2014-08-31 13:00:09

标签: python camera raspberry-pi

我一直在设置我的覆盆子pi每隔5秒自动拍照并将文件保存为image1,image2等。这是我一直在尝试的Python代码:

import time
import picamera
counter = 0
with picamera.PiCamera() as camera:
    for each in range(5):
        counter = counter + 1
        camera.start_preview()
        time.sleep(5)
        camera.capture("/home/pi/python/Pictures/image",counter,".jpg")
        camera.stop_preview()

但每次我运行时都会出现此错误:

Traceback (most recent call last):
  File "/home/pi/python/camera_repeated.py", line 9, in <module>
    camera.capture("/home/pi/python/Pictures/image",counter,".jpg")
  File "/usr/lib/python3/dist-packages/picamera/camera.py", line 1303, in capture
    format = self._get_image_format(output, format)
  File "/usr/lib/python3/dist-packages/picamera/camera.py", line 684, in _get_image_format
    format[6:] if format.startswith('image/') else
AttributeError: 'int' object has no attribute 'startswith'

2 个答案:

答案 0 :(得分:1)

你正在进行字符串连接错误。 python中的字符串应该与它们之间的+连接起来。您使用的是,符号,通常会在函数调用中分隔参数。

PiCamera.capture的签名定义为

capture(output, format=None, use_video_port=False, resize=None, splitter_port=0, **options)

因此,您首先将输出文件指定为字符串,然后(可选)指定格式。如果未指定格式,则格式将从给定输出文件的文件扩展名派生,因此您可以将其留空。

所以第9行的正确呼叫应该是:

camera.capture("/home/pi/python/Pictures/image" + str(counter) + ".jpg")

你现在只给一个字符串。在您给出3个参数之前,格式为counter变量的值,第三个(use_video_port)的值为.jpg。在内部,库似乎测试了常见的已知mime类型startswith('image/')的给定格式,但是当你给出一个整数时,没有这样的方法startswith。这导致了错误。

答案 1 :(得分:0)

我认为下面的代码更短更好:

对于范围 (5) 中的每个: camera.capture("/home/pi/python/Pictures/image%s.jpg" %each) 睡觉 (5)