2017-12-24 10 views
3

OpenCVとGstreamerでたくさんのスレッドを見てきましたが、単に私のエラーに解決できません。私はOpenCVでGstreamerパイプラインを開こうとしています。私はGStreamerを使ってOpenCVを構築しました。そして、OpenCVが正常に構築されたことを示すCMakeのステップでYESと答えています。ストリームを取得するコマンドはコマンドラインから正常に動作しますが、フレームを表示してOpenCVにハングアップします。C++ OpenCVでJPEGパイプラインを統合できません

Serverの私の構文:クライアントのためのOpenCVの中

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 

私の構文(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

私がしたすべての支援を提供してください私はOpenCVでGstreamerを有効にしていることを除いて、始めたときには近くにいません。私はOpenCVの異なるバージョンを試しました。

おかげ

答えて

0

VideoCaptureキャップ( "udpsrcポート= 5000アプリケーション/ X-RTP、エンコーディング名= JPEG、ペイロード= 26 rtpjpegdepay JPEGDEC videoconvert appsink!!!!!")。

今日、Gstreamerのドキュメンテーションを通してさらに深く掘り下げて、私はこの問題を解決しました。ビデオコンバットの追加は問題を解決しました。 Gstreamerのドキュメントによると、videoconvertはデータを自動的にappsinkの適切なフォーマットに変換します。これにより、OpenCV VideoCaptureで正しく読み込むことができます。

関連する問題