触发Pi相机时出现多个图像实例

时间:2019-04-24 20:43:24

标签: python linux raspberry-pi

我有一些代码,当触发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'))

预期结果应该是相机拍摄多张静止图像而不是一张静止图像。

2 个答案:

答案 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(...)

我是根据GPIO_Zero_Cheatsheet.pdf

编写的