【问题标题】:Switching from OpenCV 3 to OpenCV 4 causes webcam to record at a max of 5 fps instead the usual 30 fps从 OpenCV 3 切换到 OpenCV 4 会导致网络摄像头以最高 5 fps 的速度录制,而不是通常的 30 fps
【发布时间】:2020-06-01 11:18:42
【问题描述】:

自从我在 C++ 项目中从 OpenCV 3.x 更改为 4.x(从源代码编译)后,我遇到了一些麻烦。我在一个小例子中复制了这种行为,它只打开一个网络摄像头并记录 5 秒钟。

在 3.x 中,我可以将网络摄像头的帧速率设置为 30 全高清,但与 4.x 相同的代码只是忽略 camera.set(cv::CAP_PROP_FPS,30) 并将其设置为 5。如果我使用 720p,则 fps 设置为 10。

也许代码在这里不相关,因为它是一个经典的例子,但以防万一我把它留在这里。

#include "opencv2/opencv.hpp"
#include "iostream"
#include "thread"
#include <unistd.h>

using namespace cv;

VideoCapture camera(0);
bool stop = false;
int fc = 0;

void saveFrames()
{
    while(!stop)
    {
        Mat frame;
        camera >> frame;
        cv::imwrite("/tmp/frames/frame" + std::to_string(fc) + ".jpg", frame);
        fc++;
    }
}

int main()
{
    if(!camera.isOpened())
        return -1;

    camera.set(cv::CAP_PROP_FRAME_WIDTH,1920);
    camera.set(cv::CAP_PROP_FRAME_HEIGHT,1080);
    camera.set(cv::CAP_PROP_FPS,30);

    double fps = camera.get(cv::CAP_PROP_FPS);
    std::cout << "FPS setting: " << fps << std::endl; // 5 with OCV4, 30 with OCV3

    std::thread tr(saveFrames);
    int waitSeconds = 5;
    usleep(waitSeconds * 1e6);
    stop = true;
    tr.join();

    std::cout << "Written " << fc << " frames of " << fps * waitSeconds << std::endl;
    return 0;
}

编辑:使用其他计算机进行更多测试会产生相同的结果,但在 OpenCV 4.3 似乎可以工作的 Macbook Pro(但运行相同的发行版)中除外。其他 2 台电脑是带 USB 网络摄像头的台式机。

编辑 2:从源代码构建的 3.4 版存在同样的问题。目前,只有来自 repo 的 3.2 可以在两台带有 USB 摄像头的计算机上正常工作。

【问题讨论】:

  • 当你评论camera.set(cv::CAP_PROP_FPS,30);时仍然给5?
  • 如果我评论那一行,它仍然给 5 表示 4.x,但 30 表示 3.x。
  • 有趣,您是否尝试手动测量 fps,然后您可以与CAP_PROP_FPS 进行比较。这是一个link,可以手动复制和尝试。
  • 是的,默认值为 5,就像 here。你有 2 台不同的电脑和 2 种不同的环境,对吧?一个是 opencv 3.x 一个是 4..x 或者你尝试在同一环境中使用 2 个版本?
  • 终端pkg-config --modversion opencv上的命令结果是什么

标签: c++ opencv webcam-capture


【解决方案1】:

这是影响 OpenCV > 3.3 的known bug

【讨论】:

  • 谢谢你的努力,我也很好奇
猜你喜欢
  • 1970-01-01
  • 2011-05-05
  • 2022-06-30
  • 2014-03-24
  • 2014-03-12
  • 2014-03-18
  • 2020-10-15
  • 1970-01-01
  • 2017-11-10
相关资源
最近更新 更多