2017-12-24 24 views
3

OpenCV 및 Gstreamer에서 많은 양의 스레드를 살펴본 결과 단순히 내 오류로 문제를 해결할 수 없습니다. OpenCV에서 Gstreamer 파이프 라인을 열려고합니다. GStreamer로 OpenCV를 만들었고 OpenCV가 성공적으로 빌드되었음을 나타내는 CMake 단계에서 YES라고 말합니다. 스트림을 검색하는 명령은 명령 줄에서 정상적으로 작동하지만 프레임을 표시하고 OpenCV에 멈 춥니 다.C++ OpenCV에서 JPEG 파이프 라인을 통합 할 수 없습니다

서버에 대한 나의 구문 :

gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-raw,format=I420,width=640,height=480,framerate=15/1 ! jpegenc ! rtpjpegpay ! udpsink host=<IP Address> port=5000 
클라이언트에 대한 OpenCV의에서

내 구문 (C++) :

Mat frame; 

//create video capture from video camera 
VideoCapture cap("udpsrc port=5000 ! application/x-rtp,encoding- 
name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink ! appsink"); 

cap.set(CV_CAP_PROP_FRAME_WIDTH, 640); 
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); 
for(;;) 
{ 
    cap >> frame; 

    char c = (char)waitKey(1); 

    //![display] 
    imshow(window_name, frame); 

    frame.release(); 
} 

오류 :

GStreamer Plugin: Embedded video playback halted; module autovideosink0-actual-sink-xvimage reported: Output window was closed OpenCV Error: Unspecified error (GStreamer: unable to start pipeline) in icvStartPipeline, file /home/dev/Downloads/OpenCV/opencv-3.0.0/modules/videoio/src/cap_gstreamer.cpp, line 383 terminate called after throwing an instance of 'cv::Exception' what(): /home/dev/Downloads/OpenCV/opencv- 3.0.0/modules/videoio/src/cap_gstreamer.cpp:383: error: (-2) GStreamer: unable to start pipeline in function icvStartPipeline

내가 한 모든 지원을 제공하십시오 적어도 20 개의 스택 게시물을 통해 있었고 OpenCV에서 Gstreamer를 사용하도록 설정 한 경우를 제외하고는 필자가 시작할 때 더 가까이에 있지 않습니다. OpenCV의 다른 버전을 사용해 보았습니다.

감사

답변

0

VideoCapture 캡 ("udpsrc 포트 = 5000 애플리케이션/X-RTP, 부호화 NAME = JPEG, 페이로드 = 26 rtpjpegdepay jpegdec videoconvert appsink! !!");

오늘 Gstreamer 문서를 통해 더 많은 내용을 살펴본 후 문제를 해결했습니다. videoconvert의 추가로이 문제가 해결되었습니다. Gstreamer 문서에 따르면 videoconvert는 데이터를 자동으로 appsink에 적합한 형식으로 변환합니다. 이렇게하면 OpenCV VideoCapture에서 올바르게 읽을 수 있습니다.