Обнаружение движения с помощью камеры Raspberry Pi - PullRequest
0 голосов
/ 19 января 2019
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 начнет затухать.

...