2014-08-31 120 views
1

我一直想我的樹莓派成立了自動拍照,每5秒,該文件保存爲圖像1,圖像2等,這是Python代碼,我一直在努力:樹莓派相機自動捕捉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' 

回答

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。這導致了錯誤。

+0

這看起來像應該工作,我已經測試了它,但它現在說:TypeError:不能將'int'對象隱式轉換爲str – 2014-08-31 13:27:22

+0

我假設當我修復它應該正常工作? – 2014-08-31 13:30:30

+0

哎呀,錯過了從int到字符串的轉換。您需要使用'str(counter)'將int轉換爲字符串才能進行字符串連接。更新了我的答案,所以現在應該真的有效。 – ConcurrentHashMap 2014-08-31 13:30:38