树莓派相机自动捕捉python脚本



我一直在尝试将我的树莓派设置为每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'

字符串连接错误。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。这导致了错误。

我假设下面的代码更短更好:

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

最新更新