5

次のコードを使用して、rtsp 経由でフレームを取得しようとしている HD ネットワーク カメラがあります。

//in Form_Load
Application.Idle += getNextFrame;

そしてイベントハンドラ:

private void getNextFrame(object sender, EventArgs ags)
{
        //where _imgCount is the total image Grabs
        lbl_Count.Text = _imgCount++.ToString(); 
        // and ibLive is a Emgu ImageBox
        ibLive.Image = capAxis.QueryFrame().Resize(640, 480, INTER.CV_INTER_AREA);
}

プログラムを開始すると、画面の下部に「縞模様」が表示される前に、20 ~ 40 フレームが取得されます。常に画像の下部にありますが、画面の半分を占める場合もあります。

ここに画像の説明を入力

ストリームの解像度は 1920x1080 で、mjpeg を使用しています。h.264 に切り替えてみましたが、同じ結果でした。

Emgu バージョン x86-2.4.0.1717 を使用しています

何か案は?ありがとう。

4

4 に答える 4

2

これは古い質問であることは知っていますが、最近同じ問題に遭遇しました。別のストリーミング ライブラリを使用することをお勧めします。例えば。

本当に EMGU を使用してストリーミングする必要がある場合は、低解像度または高圧縮のストリーム プロファイルを作成してください。圧縮を 30 に設定し、同じ解像度を使用して、rtsp URL にストリーム プロファイル名を指定しました。(私のような Axis カメラを使用していると仮定してcapAxis)

Capture cap = new Capture(@"rtsp://10.0.0.1/axis-media/media.amp?videocodec=h264&streamprofile=rtspstream");
于 2014-10-07T05:17:15.770 に答える
1

私はそのような同じ問題を抱えており、自分で解決しました。ONVIF Ip カメラの URL を知るために iSpy を使用しました。IP カメラの URL は rtsp://192.168.1.xxx:554//user=admin_password=tlJwpbo6_channel=1_stream=0.sdp?real_stream です。ストリーム = 0 の場合、IP カメラは HD 解像度 (1280 x 720) で実行され、その解像度は、私の画像の縞模様の結果になります. したがって、iSpy が提供する URL には 2 つのオプションがあり、もう 1 つはストリームが異なるだけです。stream = 1 を低解像度 (352 x 288) に変更したところ、良好な結果が得られました。私のイメージではスジはありません。この問題から私が学んだことは、低解像度で使用する必要がある RTSP を使用することでした。解像度が高いと、画像の結果が良くありません。それがあなたの問題に役立つことを願っています。

よろしく、 アルフォンス・ダーニ

于 2015-08-13T03:23:05.410 に答える