Поток PiCamera Image Array от одного Raspberry Pi к другому - PullRequest
0 голосов
/ 17 ноября 2018

Я строю систему домашнего наблюдения, используя Raspberry Pi и OpenCv. По сути, моя установка будет состоять из двух устройств, первым будет камера безопасности, которая будет представлять собой малиновый пи-ноль и пи-камеру. Другое устройство будет основным концентратором (Raspberry Pi 3), который будет выполнять всю тяжелую работу, такую ​​как распознавание лиц, распознавание речи и другие операции.

я хочу передать потоковое видео с камеры безопасности на главный концентратор, чтобы она могла обрабатывать изображения. Поэтому, по сути, я хочу захватить кадр с пи-камеры, преобразовать его в пустой массив (если это не сделано по умолчанию) и отправить эти данные в основной концентратор, чтобы затем преобразовать их обратно в кадр изображения для анализа. по Opencv.

Я разделяю операции, так как моя камера видеонаблюдения работает на малиновом пи-нуле, который не очень быстрый и не может выдерживать тяжелую работу. Это также потому, что моя камера безопасности подключена к аккумулятору, и я пытаюсь снизить использование Pi, поэтому я выделяю основной концентратор для тяжелых операций.

Я использую среду Python v3 на обоих устройствах. Я хорошо знаю технологии связи IoT, такие как mqtt, TCP и так далее. Но я хотел бы помочь с реализацией таких технологий в скрипте Python, чтобы удовлетворить мои потребности.

1 Ответ

0 голосов
/ 17 ноября 2018

Я думаю, что будет лучше разбить вашу задачу.1. Захватите поток изображения с pi0 и передайте его.2. Возьмите поток из pi1 и обработайте его в pi3

Пример кода, чтобы начать работу с захватом изображения, который вы можете найти здесь :

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Вам нужнонайти это самостоятельно.Потоковое видео на URL :: IP.Add.ress.OF_pi0 / cam_read

Потоковое видео в потоковом режиме Python Flask

Затем используйте этот URL для обработки видео вpi3 Пример кода здесь :

import numpy as np
import cv2

# Open a sample video available in sample-videos
vcap = cv2.VideoCapture('IP.Add.ress.OF_pi0/cam_read')
#if not vcap.isOpened():
#    print "File Cannot be Opened"

while(True):
    # Capture frame-by-frame
    ret, frame = vcap.read()
    #print cap.isOpened(), ret
    if frame is not None:
        # Display the resulting frame
        cv2.imshow('frame',frame)
        # use other methods for object face or motion detection 
        # OpenCV Haarcascade face detection 
        # Press q to close the video windows before it ends if you want
        if cv2.waitKey(22) & 0xFF == ord('q'):
            break
    else:
        print "Frame is None"
        break

# When everything done, release the capture
vcap.release()
cv2.destroyAllWindows()
print "Video stop"

Этот ответ не является прямым решением вашего вопроса.Вместо этого это скелет для вас, чтобы начать.Обнаружение лица можно найти здесь

...