从一堆图像中在视频捕捉中设置框架编号

时间:2016-11-23 09:56:43

标签: c++ opencv

简而言之,我在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

在从一堆图像中设置捕获帧时,这是一个常见问题吗?我该如何解决?

祝福

0 个答案:

没有答案