0

時間の問題があります。画像処理用に qt GUI をプログラムしました。この場合、ビデオ処理とオブジェクト トラッキング用のブロブ検出器を実装することが適切です。基本的に見た目は良いです。処理、グラブ、mser 操作の背後で GUI を使用し、わずか 0.07 ~ 0.08 秒で表示します。これは、10 fps を超える優れたフレームレートに使用できます。

その目的のために、Suse 12.3 で Qt 4 - C++ を使用しています。OpenCV 2.4.3 とラップトップ Web カメラ。私の問題は、しばらくするとプログラムがハングすることです。

システム モニターを見ると、CPU パワーが 100 % に達しており、1 回の実行で CPU のハード リソースが長時間 (GUI なしで) 使用されていることがわかります。何が問題なのかわかりません。誰もそれを経験していますか?

事前にTY!

いくつかのコード スニペット: GUI に関する MSER 初期化:

MSER FtMSERVid( MSERDelta, MSERMinArea, MSERMaxArea,MSERMaxVariation ,MSERMinDiversity);

ビデオ処理機能

double startTime = clock();
camDev.read(vidImg);
if(vidImg.empty() == true)
{
    newLineInText(tr("No data from device"));
    timer->stop();
    ui->pbPlay->setText(tr(">"));
    return;
}

MSERPointsVid.clear();
if(vidImg.channels() > 1)
    cvtColor(vidImg, vidImg,CV_BGR2GRAY);
FtMSERVid(vidImg, MSERPointsVid);

Mat showMat = vidImg.clone();
if(showMat.channels() > 1)
{
    cvtColor(showMat,showMat,CV_BGR2RGB);
    qImg = QImage((uchar*)showMat.data,showMat.cols,showMat.rows,showMat.step,QImage::Format_RGB888);
 }
else if(showMat.channels() == 1)
    qImg =   QImage((uchar*)showMat.data,showMat.cols,showMat.rows,showMat.step,QImage::Format_Indexed8);
ui->lblOrig->setPixmap(QPixmap::fromImage(qImg));
double endTime = clock();
double timeDuration = (endTime - startTime)/CLOCKS_PER_SEC;

if(numVid%10 == 0)
{
   framesPS = int(1/timeDuration) - 1;
   if(framesPS > 1)
       framesPS = 1;
   FPSChanged(framesPS);
   numVid = 0;
}
4

1 に答える 1