首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视频跟踪上的MSER

视频跟踪上的MSER
EN

Stack Overflow用户
提问于 2013-11-12 15:31:14
回答 1查看 222关注 0票数 0

我有时间问题。我已经为图像处理编写了一个qt Gui。对于这种情况,实现用于视频处理和对象跟踪的blobdectetors将是相关的。大体上看起来不错。它使用图形用户界面进行处理,抓取,mser操作和显示只有0.07到0.08秒,可以用于超过10fps的良好帧率。

为此,我在Suse12.3上使用了qt4- C++。OpenCV 2.4.3和笔记本电脑网络摄像头。我的问题是,过了一会儿我的程序就挂了。

看着我的系统监视器,我看到CPU-Power已经达到了100 %,并且一次运行占用了cpu的硬资源很长一段时间(没有GUI)。我不明白哪里出了问题。有谁有这方面的经验吗?

在TY之前!

一些代码片段:关于GUI的MSER初始化:

代码语言:javascript
复制
MSER FtMSERVid( MSERDelta, MSERMinArea, MSERMaxArea,MSERMaxVariation ,MSERMinDiversity);

视频处理功能

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2013-11-14 20:53:39

你的提示帮助我解决了一个问题。MSER正在创建大量数据,我已经编程将第二次更新显示到一个表中,该表独立工作。到目前为止,没有问题,但是对于这个表来说,要显示它提供的所有Points.So太多了,它只是为了填充表中的hullpoint。我已经改变了相应的向量,然后它就像没有其他东西一样运行。

我是因为你对valgrind的暗示才发现的。我以前从来没有用过这个。线程提示让我学到了很多关于线程的知识。谢谢你这么做。

英格堡

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19923350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档