2

IP カメラからのビデオ ストリームを処理するソフトウェアを 1 年間開発しています。このソフトウェアは、ビデオをリアルタイムで表示し、録画したり、ビデオ処理を行ったりすることもできます。IP カメラは、RTSP 経由で MJPEG または H264 ビデオをストリーミングできます。ビデオのサイズは 25fps で 768x576 です。私の問題は、H264 ストリームを使用する場合、グラブ メソッドが遅すぎて 30 ~ 60 ミリ秒かかることです。私のプログラムはフレームをグラブするだけではないので、グラブ メソッドに 50 ミリ秒かかると、ビデオの 25 fps を処理できません。私が理解していないのは、非常に強力なコンピューター DualCore @3Ghz を持っているということです。OpenCv でフレームをすばやく取得する方法はありますか?

これが私のコードの一部です( Qt + home built OpenCv 2.4.1 MinGw を使用):

キャプチャを開始:

videoCapture.open(fileName.toStdString());
queryFrameTimer->start(20);
connect(queryFrameTimer,SIGNAL(timeout()),this,SLOT(queryFrame()));

queryFrame メソッド

void VideoStreamer::queryFrame()
{
    qDebug() << QTime::currentTime().toString("mm:ss:zzz") << "queryFrame start";
    QTime elapsedTimer;
    elapsedTimer.start();    
    Mat frame;
    videoCapture >> frame;
    qDebug()  <<" VideoStreamer::queryFrame " + QString::number(elapsedTimer.elapsed());
    [...]
}

デバッグ出力

"41:07:366" queryFrame start 
" VideoStreamer::queryFrame 44 ms" 
"41:07:429" queryFrame start 
" VideoStreamer::queryFrame 35 ms" 
"41:07:493" queryFrame start 
" VideoStreamer::queryFrame 37 ms" 
"41:07:556" queryFrame start 
" VideoStreamer::queryFrame 28 ms" 
"41:07:595" queryFrame start 
" VideoStreamer::queryFrame 38 ms" 
"41:07:648" queryFrame start 
" VideoStreamer::queryFrame 42 ms" 
"41:07:710" queryFrame start 
" VideoStreamer::queryFrame 34 ms" 
"41:07:772" queryFrame start 
" VideoStreamer::queryFrame 38 ms" 
"41:07:835" queryFrame start 
" VideoStreamer::queryFrame 28 ms" 
"41:07:866" queryFrame start 
" VideoStreamer::queryFrame 56 ms" 
"41:07:959" queryFrame start 
" VideoStreamer::queryFrame 25 ms" 
"41:07:990" queryFrame start 
" VideoStreamer::queryFrame 60 ms" 
"41:08:053" queryFrame start 
" VideoStreamer::queryFrame 35 ms" 
"41:08:115" queryFrame start 
" VideoStreamer::queryFrame 27 ms" 
"41:08:147" queryFrame start 
" VideoStreamer::queryFrame 64 ms" 
"41:08:241" queryFrame start 
" VideoStreamer::queryFrame 24 ms" 
"41:08:275" queryFrame start 
" VideoStreamer::queryFrame 56 ms" 
"41:08:335" queryFrame start 
" VideoStreamer::queryFrame 50 ms" 
4

0 に答える 0