首页 文章

如何使用opencv和python获取Gstreamer直播?

提问于
浏览
0

我正在使用终端中的以下代码从raspberry pi零流式传输实时usb相机源:

gst-launch-1.0 -v v4l2src device=/dev/video0 ! "image/jpeg,width=640, height=480, framerate=30/1" ! rtpjpegpay ! udpsink host=<MyRPiIPHere> port=5000

通过在终端中使用以下代码,我可以从我的计算机(ubuntu 18.4)获得低延迟的高帧率流而没有任何问题:

gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, encoding-name=JPEG, payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink

但是,我想使用python和opencv来获取该流,以便对图像进行一些操作 .

当我尝试使用此代码使用cv2库获取图像时:

cap = cv2.VideoCapture('udpsrc port=5000 ! application/x-rtp, encoding-name=JPEG, payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink')

它没有抓到任何东西 . 我还尝试将各种类型的 ! videoconvert ! video/x-raw, format=(string)BGR ! appsink 版本添加到视频捕捉参数中 .

frame 在调用 ret, frame = cap.read() 后始终返回 None .

我已经分别安装了opencv(cv2 .__ version__ = 3.4.0)和gstreamer(gst-launch-1.0) .

我经常搜索解决方案,但找不到一个简单的解决方案 . 我读过像"you should build opencv with gstreamer support"这样的东西 . 我如何检查我的opencv是否具有gstreamer支持以及如何安全地构建opencv与gstreamer支持安心地记住我在计算机上安装了opencv和gstreamer(我不介意卸载它们但是因为我的linux知识不好一个人应该给我一步一步的指示:/)

有没有解决方案让我使用python和cv2库获取该流而无需卸载重建opencv?

如果我需要使用Gstreamer模块支持重建opencv,我如何安全地卸载已安装的库并重建opencv?

任何帮助深表感谢!

1 回答

  • 0

    如果您安装了带有gstreamer支持的opencv,我可以回答有关如何查找的问题 .

    将其粘贴到Python脚本中:

    print(cv2.getBuildInformation())
    

    你应该找到类似的东西:

    Video I/O:
    ...
        GStreamer:                   
          base:                      YES (ver 1.8.3)
          video:                     YES (ver 1.8.3)
          app:                       YES (ver 1.8.3)
    ...
    

    如果不是,则必须使用gstreamer支持重新安装opencv .

相关问题