简而言之,我在qt4.8和opencv3中使用c ++实现了视频跟踪和标签系统。
我可以将像.mpeg这样的视频文件和包含图像(.jpg)的文件夹加载到cv::VideoCapture
中,跟踪和标记工作也很好。 GUI包含一个跟踪栏,更新到当前帧相对于总帧数。我可以抓住轨迹栏上的当前位置并拖动它以设置一个新的当前帧(向前/向后)以快速跳转到视频内。
问题:视频文件的一切正常,但是当我从文件夹中加载一堆图像来创建视频时,我无法使用轨迹栏跳转: 轨迹栏跳转到0(开始),因为当前帧被意外设置为-9.22337e + 18。
// callback when trackbar is moved
void MainWindow::on_frameSlider_sliderMoved(int position)
{
// get current frame, render it and update UI elements
if(position < videoPlayer->getNumberOfFrames())
{
std::cerr << "frameposition before " << videoPlayer->getCurrentFrame() << std::endl;
std::cerr << "frameposition bar " << position << std::endl;
videoPlayer->setCurrentFrame(position);
std::cerr << "frameposition after " << videoPlayer->getCurrentFrame() << std::endl;
ui->currentTimeLabel->setText( helper::getFormattedTime( position/(int)videoPlayer->getFrameRate()) );
ui->currentFrameLabel->setText( QString::number(position) );
//stuff to render frames (it's already broken here, but displays the processed framenumber)
videoPlayer->play();
helper::stopPlayer(this);
}
}
void Player::setCurrentFrame( int frameNumber ){
capture->set(cv::CV_CAP_PROP_POS_FRAMES, frameNumber);
}
输出如下:
在7之前的框架
框架定位杆10
框架位置-9.22337e + 18
已处理:-9.22337e + 18
框架位置-9.22337e + 18
框架定位条0
架构后0
已处理:-9.22337e + 18
在0之前的框架位置
框架定位杆23
框架位置-9.22337e + 18
在从一堆图像中设置捕获帧时,这是一个常见问题吗?我该如何解决?
祝福