繁体   English   中英

无法在 Jetson-Nano 中使用 Gstreamer 和 OpenCV 显示视频 stream

[英]Unable to show video stream using Gstreamer and OpenCV in Jetson-Nano

我正在尝试使用 OpenCV 和 G stream 从 ZA12A3079E14A8CEDB24E 相机打开视频 stream。 管道读取每一帧,但没有 window 与imshow一起显示。 当我在 bash 上使用gst-launch-1.0nvoverlaysink运行管道时,它工作正常。 以下是我一直在使用的python代码:

import cv2 as cv

gst = "rtspsrc location=rtsp://usser:pass@ip:port/url latency=0 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! appsink"
capture = cv.VideoCapture(gst, cv.CAP_GSTREAMER)

print("Is pipeline open: ", capture.isopened())
while True:
     ret, frame = capture.read()
     print("Is receiving frames: ", ret)
     cv.imshow("Stream",frame)

capture.release()

当我运行脚本时,我可以看到管道是打开的,并且 OpenCV 正在读取帧。 我只有以下警告:

[ WAN:0] global /tmp/pip-install-r_pt66np/opencv-python/opencv/modules/videoto/
src/cap_gstreamer.cpp (935) open Opencv | GStreamer warning: Cannot query video
position: status=1, value=0, duration=-1 

尽管脚本运行并消耗帧, imshow不会生成 window。

问题不在于管道。 我的管道有很多错误,我想错误就在那里。 imshow需要等待键才能工作。 这是工作代码:

import cv2 as cv

gst = "rtspsrc location=rtsp://usser:pass@ip:port/url latency=0 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! appsink"
capture = cv.VideoCapture(gst, cv.CAP_GSTREAMER)

print("Is pipeline open: ", capture.isopened())
while capture.isOpened() :
     ret, frame = capture.read()
     print("Is receiving frames: ", ret)
     cv.imshow("Stream", frame)
     
     if cv.waitKey(25) & 0xFF == ord("q"):
          break

capture.release()
cv.destroyAllWindows()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM