分割故障OpenCV cap.read udp流Python
我是使用OpenCV的新手,我试图编写一个程序来访问UDP端口上的视频流。但是,当我运行代码时,代码不断给出分段错误。该程序仅用于显示OpenCV读取的每一帧,并且可用于计算机上的文件。如果你能指出我做错了什么,我将不胜感激。分割故障OpenCV cap.read udp流Python
import cv2 import numpy as np 
cap = cv2.VideoCapture("udpsrc port=5600 caps=\"application/x-rtp, format=(string)I420, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, framerate=(fraction)25/1\" ! rtph264depay ! decodebin ! appsink") 
while(cap.isOpened()): 
    print "loop" 
    ret, frame = cap.read() 
    print "ret, frame" 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    print "gray" 
    cv2.imshow('frame', gray) 
    print "imshow" 
    if cv2.waitKey(40) & 0xFF == ord('q'): 
     print "breaking" 
     break 
cap.release() 
cv2.destroyAllWindows() 
的输出是:
环 RET,帧 灰 imshow 环 分段故障(核心转储)
运行:
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, format=(string)I420, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, framerate=(fraction)25/1" ! rtph264depay ! decodebin ! avimux ! filesink location=/home/lab/Desktop/test.avi 在终端工作很好,所以我不知道接下来要看什么。
感谢您的帮助。
编辑: 如萨默尔图费勒的建议,我尝试添加:
if cap.set(3, 1280)==True:     print "width set" 
else: 
    print "error width" 
    sys.exit() 
if cap.set(4, 720)==True: 
    print "height set" 
else: 
    print "error height" 
    sys.exit() 
之间 “帽= cv2.VideoCapture()...而(cap.isOpened())”。然而,它现在给出了一个不同的错误(我尝试过和没有== True)。
GStreamer插件:嵌入式视频播放暂停;模块udpsrc0报告:内部数据流错误。 icvStartPipeline中的OpenCV错误:未指定错误(GStreamer:无法启动管道 ),文件/home/lab/Sam/OpenCV/opencv/modules/videoio/src/cap_gstreamer.cpp,行407 Traceback(最近一次调用的最后一个) : 文件“OpenCV_Gst.py”,第9行,在 if cap.set(3,1280)== True: cv2.error:/ home/lab/Sam/OpenCV/opencv/modules/videoio/src/cap_gstreamer的.cpp:407:错误:(-2)的GStreamer:无法在功能icvStartPipeline启动管道
回答:
我解决同样的问题,当我这样做:
cap = cv2.VideoCapture("udpsrc port=5600 caps=\"application/x-rtp, format=(string)I420, width=(int)1280, height=(int)720, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, 
colorimetry=(string)bt709, framerate=(fraction)25/1\" ! rtph264depay ! 
videoconvert ! decodebin ! appsink") 
它的工作原理。
以上是 分割故障OpenCV cap.read udp流Python 的全部内容, 来源链接: utcz.com/qa/265711.html






