我试图获得一个实时视频输入到opencv。我的视频输入来自我本地网络上的一个ip摄像头,它发送一个rtsp视频提要。我想做的是一个使用ip摄像头的身体追踪器。Whit我的usb hd720罗技网络摄像头工作完美,但不是与ip摄像头。问题是有一个滞后,大部分是8秒。我已经试过最多的东西了,我可以把它降到3秒,但这还不够长:
1:将cv2.videoCapture()的缓冲区设置为1,并设置正确的帧,2:捕获摄像机馈送和我的跟踪程序的多线程,3:尝试了许多不同的代码。
我知道问题在于opencv不能处理rtsp提要。现在,我正试图得到我的相机饲料槽GStreamer。我希望有一种方法,gstreamer将rtsp提要转换为opencv可以更快地处理的内容。
import cv2
gst = 'rtspsrc location=rtsp://username:pasword@10.2.9.164:554/h264Preview_01_main ! ......... ! appsink'
cap = cv2.VideoCapture(gst,cv2.CAP_GSTREAMER)
while(cap.isOpened()):
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(400) & 0xFF == ord('q'):
break我希望有人知道正确的gstreamer字符串
我找不到正确的字符串使gstreamer将rtsp信号转换为app接收器。
发布于 2022-04-07 19:23:14
您可以尝试以下几种方法:
import cv2
gst = 'rtspsrc location=rtsp://username:pasword@10.2.9.164:554/h264Preview_01_main latency=300 ! decodebin ! videoconvert ! video/x-raw,format=BGR ! appsink drop=1'
# Variant for NVIDIA decoder that may be selected by decodebin:
# gst = 'rtspsrc location=rtsp://username:pasword@10.2.9.164:554/h264Preview_01_main latency=300 ! decodebin ! nvvidconv ! video/x-raw,format=BGRx ! videoconvert ! video/x-raw,format=BGR ! appsink drop=1'
cap = cv2.VideoCapture(gst,cv2.CAP_GSTREAMER)
while(cap.isOpened()):
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
cap.release()https://stackoverflow.com/questions/71754302
复制相似问题