Локальный поток видео обратного вызова - PullRequest
0 голосов
/ 13 января 2020

Итак, у меня есть камера ESP32, подключенная к моему arduino, и я настроил все, что я могу теперь передавать потоковое видео с помощью этой камеры по локальному адресу: http://192.168.43.87/ Однако я хочу импортировать этот файл видео в реальном времени в мой python файл, в котором я собираюсь сделать живое обнаружение. Как я могу импортировать это?

import cv2
import numpy as np

cap = cv2.VideoCapture("http://192.168.43.87/stream?") <- This is where it is needed to import

while True:
    _, frame = cap.read()
    hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # Red color
    low_red = np.array([161, 155, 84])
    high_red = np.array([179, 255, 255])
    red_mask = cv2.inRange(hsv_frame, low_red, high_red)
    red = cv2.bitwise_and(frame, frame, mask=red_mask)

    cv2.imshow("Frame", frame)
    cv2.imshow("Red", red)


    key = cv2.waitKey(1)
    if key == 27:
        break

1 Ответ

0 голосов
/ 15 января 2020
import cv
import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.1.100', 8000))
connection = client_socket.makefile('wb')

stream_bytes = b' '
while True:
    stream_bytes += self.connection.read(1024)
    first = stream_bytes.find(b'\xff\xd8')
    last = stream_bytes.find(b'\xff\xd9')
    if first != -1 and last != -1:
        jpg = stream_bytes[first:last + 2]
        stream_bytes = stream_bytes[last + 2:]
        image = cv2.imdecode(np.frombuffer(jpg, dtype=np.uint8), cv2.IMREAD_COLOR)
        cv2.imshow('image', image)

    if cv2.waitKey(1) & 0xFF == ord('q'):
           break`import numpy as np
import cv
import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.1.100', 8000))
connection = client_socket.makefile('wb')

stream_bytes = b' '
while True:
    stream_bytes += self.connection.read(1024)
    first = stream_bytes.find(b'\xff\xd8')
    last = stream_bytes.find(b'\xff\xd9')
    if first != -1 and last != -1:
        jpg = stream_bytes[first:last + 2]
        stream_bytes = stream_bytes[last + 2:]
        image = cv2.imdecode(np.frombuffer(jpg, dtype=np.uint8), cv2.IMREAD_COLOR)
        cv2.imshow('image', image)

    if cv2.waitKey(1) & 0xFF == ord('q'):
           break```
...