我一直在设置我的覆盆子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'
答案 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)