我有一些代码,当触发PIR传感器时,相机拍摄一张图像并将其上传到Azure blob存储,拍摄一张照片是不够的,但是当相机拍摄时我无法获得程序拍摄多张图像的功能被触发。
from gpiozero import MotionSensor
from picamera import PiCamera
from datetime import datetime
from azure.storage.blob import BlockBlobService
from azure.storage.blob import ContentSettings
camera = PiCamera()
pir = MotionSensor()
block_blob_service = BlockBlobService(account_name='YOURACCOUNT', account_key='YOURKEY')
while True:
pir.wait_for_motion()
filename = "pircam-" + datetime.now().strftime("%Y-%m-%d_%H.%M.%S.jpg")
camera.capture(filename)
pir.wait_for_no_motion()
block_blob_service.create_blob_from_path(
'YOURCONTAINER',
filename,
filename,
content_settings=ContentSettings(content_type='image/jpeg'))
预期结果应该是相机拍摄多张静止图像而不是一张静止图像。
答案 0 :(得分:0)
图像被保存到带有时间戳的文件中,时间戳的时间精确到秒。如果在同一秒钟内拍摄图像,则文件名将相同,并且只有一个结果文件。您需要使文件名不同-例如使用最近的毫秒。
答案 1 :(得分:0)
我无法对其进行测试,但是pir.wait_for_no_motion()
在第一张图像后停止了循环,因此您无法获得更多图像。您必须使用pir.motion_detected
来测试是否需要拍照
while True:
if pir.motion_detected:
filename = "pircam-" + datetime.now().strftime("%Y-%m-%d_%H.%M.%S.%s.jpg")
camera.capture(filename)
block_blob_service.create_blob_from_path(...)
编写的