Прежде всего, у меня есть Python 3 с библиотекой Gstreamer.
print(cv2.getBuildInformation())
показывает Gstreamer с YES рядом с ним.
Вот код передатчика, использующий gstreamer в rasperryPi3:
gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-raw,width=320,height=240 ! videoconvert ! x264enc tune=zerolatency ! rtph264pay ! udpsink host='my ip address' port=10000
и я буду использовать код Python для определения фигур, распознавания объектов и т. Д.
вот мой код Python:
import numpy as np
import cv2
def receive():
cap = cv2.VideoCapture("udpsrc port=10000 ! application/x-rtp,encoding-name=H264 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! videoconvert ! ximagesin ", cv2.CAP_GSTREAMER)
while True:
ret,frame = cap.read()
if not ret:
print('empty frame')
continue
cv2.imshow('receive', frame)
if cv2.waitKey(1)&0xFF == ord('q'):
break
cap.release()
receive();
, ноон показывает всегда показывает пустую рамку.
когда я попробовал эту команду на терминале:
gst-launch-1.0 udpsrc port=10000 ! application/x-rtp,encoding-name=H264 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! videoconvert ! ximagesink
она работает просто отлично, поэтому проблема на моем конце Python.
так что порекомендуете?