Python opencv之间的gstreamer共享

Python opencv之间的gstreamer共享,python,opencv,gstreamer,Python,Opencv,Gstreamer,我使用gstreamer并通过以下方式从网络摄像头捕获图像: gst-launch-1.0 -e rtspsrc location='rtsp://admin:admin@10.0.4.139:554/cam/realmonitor?channel=1&subtype=0' ! rtph264depay ! vpudec ! vpuenc_jpeg ! filesink location=/dev/video_stream0 -v /dev/video_stream0是mkfifo,但

我使用gstreamer并通过以下方式从网络摄像头捕获图像:

gst-launch-1.0 -e rtspsrc location='rtsp://admin:admin@10.0.4.139:554/cam/realmonitor?channel=1&subtype=0' ! rtph264depay ! vpudec ! vpuenc_jpeg ! filesink location=/dev/video_stream0 -v
/dev/video_stream0是mkfifo,但当我想通过代码从OpenCv获取jpeg时:

import cv2
cap = cv2.VideoCapture('/dev/video_stream0')
#cap = cv2.CreateFileCapture('/dev/video_stream0')
count = 0
while cap.isOpened():
    ret,frame = cap.read()
    cv2.imshow('window-name',frame)
    #cv2.imwrite("frame%d.jpg" % count, frame)
    count = count + 1
    if cv2.waitKey(10) & 0xFF == ord('q'):
        break


cap.release()
cap.destroyAllWindows()
这给了我错误

OpenCV错误:中的断言失败(size.width>0&&size.height>0) imshow,文件 /home/user/fsl发布bsp/build mcd/tmp/work/cortexa9hf vfp neon poky linux gnueabi/opencv/2.4.11+gitAUTOINC+2c9547e314-r0/git/modules/highgui/src/window.cpp, 第261行

例如,我如何在gstreamer和OpenCv之间共享JPEG? 若有更简单的方法,如分享视频流或模拟摄像机设备,我将不胜感激。
谢谢

您不能用其他工具测试mkfifo吗?您还可以在以下内容后添加标识:
vpuenc\u jpeg!身份沉默=错误!filesink-v…
并检查它转储了什么(您应该看到缓冲区大小)。。另外,当您使用autovideosink显示它时(12月后),它工作正常?当我使用cat/dev/video\u stream0时,我看到它工作正常,因为它显示数据。嗯,我认为您可以使用GStreamer测试mkfifo的读数。。理论上,cat转储可以是空视频帧。。顺便说一句,有fdsink和fdsrc。。也许你应该使用这些,这也很有趣,但对于更老的gstreamer。。使用OpenCV v3+的视频捕获是GStreamer管道——这不是更好的解决方案吗?我将尝试使用OpenCV 3.0;)非常感谢您如何使用fdsink和fdsrc?