【发布时间】:2015-06-10 18:45:33
【问题描述】:
我正在编写一个代码,它使用 QTimer 触发对 opencv videoCapture 的调用以读取视频帧。我通常会阅读大量视频,所以想知道有没有其他方法可以加快这个过程。
这里是我使用 QTimer 的代码的快照:
timer = new QTimer();
timer->setTimerType(Qt::PreciseTimer);
connect(timer, SIGNAL(timeout()), this, SLOT(read_shape_params()));
//in a loop stop timer and setup the next video stream then start
void next(){
timer->stop();
stream = new video_stream_reader();
stream->setColorGray(grayImage);
stream->set_begin_end(begin_at,end_at);
stream->open(video_base_path+video_path);
timer->start(0);
}
void shape_param_finder::read_shape_params(){
Mat frame;
frame = stream->read_frame();
}
Mat video_stream_reader::read_frame(){
Mat frame;
bool bSuccess = capture->read(frame);
return frame;
}
【问题讨论】:
-
我不太明白你要达到什么目的,是不是计时器运行得太慢了?
-
是的,完全正确。 QTimer 真的很慢
-
这可能是因为您正在创建一个新的计时器对象。只需在循环之前创建一个
-
@RiyadhMohammed 您如何评价 QTimer 的速度?
-
@UmNyobe 假设视频长度为 5 分钟。我的软件处理所有帧的时间超过 5 分钟。
标签: c++ qt opencv computer-vision video-processing