gpt4 book ai didi

Opencv VideoCapture 设置 CV_CAP_PROP_POS_FRAMES 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:24 25 4
gpt4 key购买 nike

我正在使用 opencv 从使用 mpeg 压缩的 Vivotek 相机的视频输出中读取帧。我正在尝试使用该功能从特定位置开始播放视频。如下所示,其中开始是我要跳过的帧数。

inputVideo.set(CV_CAP_PROP_POS_FRAMES, start); 

但是我遇到了一个问题,因为在开始帧之前捕获了不正确的帧。

我使用的是 opencv 版本 2.4.2

有人可以帮忙解决这个问题吗?

最佳答案

有点太晚了,但搜索相同的主题(不是特定于 Vivotek Camera,而是更多关于 openCV 的 mpeg 问题):

  • 视频编码
  • OpenCV 使用 FFMPEG
  • 编码使用关键帧
  • 当跳过一些帧时,编码无法为您提供您想要的确切帧

看到类似的问题:

  • Getting individual frames using CV_CAP_PROP_POS_FRAMES in cvSetCaptureProperty

  • How can I get one single frame from a video file?

  • Problem with CV_CAP_PROP_POS_FRAMES setting next frame number

    desired position        key frame (this is where the cursor will stop)
    | | | |
    | > | |
    |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    使用 openCV 2.4.8/VS2013 和 trackbar 的示例代码:

  • 使用 AVI 格式 [MPEG4 视频 (H264)] 进行测试:设置帧位置效果很好
  • 用 MPG 格式 [MPEG1/MPEG2] 测试:设置帧位置工作正常

    double currentPos = capture.get(CV_CAP_PROP_POS_FRAMES);
    std::cout << "CV_CAP_PROP_POS_FRAMES = " << currentPos << std::endl;

    // position_slider 0 - 100
    double noFrame = position_slider*nbFrames / 100;

    // solution 1
    bool success = capture.set(CV_CAP_PROP_POS_FRAMES, noFrame);
    // solution 2
    double frameRate = capture.get(CV_CAP_PROP_FPS);
    double frameTime = 1000.0 * noFrame / frameRate;
    bool success = capture.set(CV_CAP_PROP_POS_MSEC, frameTime);

    if (!success) {
    std::cout << "Cannot set frame position from video file at " << noFrame << std::endl;
    return;
    }

    currentPos = capture.get(CV_CAP_PROP_POS_FRAMES);
    if (currentPos != noFrame) {
    std::cout << "Requesting frame " << noFrame << " but current position == " << currentPos << std::endl;
    }

    success = capture.read(frame_aux);
    if (!success) {
    std::cout << "Cannot get frame from video file " << std::endl;
    return;
    }
    imshow("test", frame_aux);

关于Opencv VideoCapture 设置 CV_CAP_PROP_POS_FRAMES 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19404245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com