首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV减慢WebCam捕获速度

OpenCV减慢WebCam捕获速度
EN

Stack Overflow用户
提问于 2013-06-10 15:10:02
回答 1查看 3.5K关注 0票数 9

我正在用OpenCV在C++应用程序中从摄像头上捕捉帧,无论是在我的Windows机器上还是在RaspberryPi (ARM,Debian )上。问题在于CPU的使用。我只需要处理帧像每2秒-所以没有实时实时视图。但如何做到这一点呢?你建议哪一个?

  1. 抓取每个帧,但只处理一些:--这有点帮助。我得到了最近的帧,但是这个选项对CPU的使用没有明显的影响(不到25%)。
  2. 抓取/处理每个帧但是睡眠:对CPU的使用有很好的影响,但是我得到的帧是旧的(5-10秒)。
  3. 在每个循环中创建/销毁VideoCapture :在某些循环之后,应用程序崩溃--尽管VideoCapture被正确清除。
  4. 还有别的主意吗?

提前感谢

代码语言:javascript
复制
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <vector>
#include <unistd.h>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
    cv::VideoCapture cap(0); //0=default, -1=any camera, 1..99=your camera

    if(!cap.isOpened()) 
    {
        cout << "No camera detected" << endl;
        return 0;
    }

    // set resolution & frame rate (FPS)
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);
    cap.set(CV_CAP_PROP_FPS, 5);

    int i = 0;
    cv::Mat frame;

    for(;;)
    {
        if (!cap.grab())
            continue;

        // Version 1: dismiss frames
        i++;
        if (i % 50 != 0)
            continue;

        if( !cap.retrieve(frame) || frame.empty() )
            continue;

        // ToDo: manipulate your frame (image processing)

        if(cv::waitKey(255) ==27) 
            break;  // stop on ESC key

        // Version 2: sleep
        //sleep(1);
    }

    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-10 23:32:15

  1. 在每个循环中创建/销毁VideoCapture :尚未测试

在Windows上,这可能有点麻烦(在其他操作系统上也是如此)--创建VideoCapture后抢占的第一帧通常是黑色或灰色的。第二帧应该很好:)

其他想法:

  • 修改主意nr 2-睡后抓取2帧。第一个框架可能是旧的,但第二个应该是新的。它没有经过测试,通常我不确定,但很容易检查。
  • 最终,在睡眠之后,您可能会在while循环中获取帧(没有睡眠),等待到您抓取同一帧两次(但这可能很难实现,特别是在RasberryPi上)。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17027085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档