import numpy as np
import picamera
import picamera.array
class DetectMotion(picamera.array.PiMotionAnalysis):
def analyze(self, a):
a = np.sqrt(
np.square(a['x'].astype(np.float)) +
np.square(a['y'].astype(np.float))
).clip(0, 255).astype(np.uint8)
# If there're more than 10 vectors with a magnitude greater
# than 60, then say we've detected motion
if (a > 60).sum() > 10:
print('Motion detected!')
else:
print('No motion')
with picamera.PiCamera() as camera:
with DetectMotion(camera) as output:
camera.resolution = (640, 480)
camera.start_recording(
'/dev/null', format='h264', motion_output=output)
camera.wait_recording(5)
camera.stop_recording()
Это для малиновой пи-камеры, использующей вектор обнаружения движения.
Этот код будет записывать 5-секундное видео, если обнаружит движение. Моя проблема в том, что я хочу сделать этот код camera.wait_recording(5)
еще раз, если он все еще обнаруживает движение. Это означает, что если оно обнаружит движение, значение camera.wait_recording
все равно будет 5 секунд, а если оно не обнаружит движение, значение camera.wait_recording
начнет затухать.