首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能用C++和Opencv以20 fps的速度捕获吗?

我能用C++和Opencv以20 fps的速度捕获吗?
EN

Stack Overflow用户
提问于 2013-06-26 07:46:10
回答 2查看 9.7K关注 0票数 2

我有一个树莓Pi,并安装在它的OpenCV和Guvcview。当我打开Guvcview时,我得到了17-21 fps,但是当我在C++中运行一个简单的程序(仅从摄像头和显示框中捕获)时,我只得到6 fps。

怎么啦?我需要配置Opencv来使用Guvcview的配置?为什么guvcview有20 fps?我能做什么?

谢谢。

P.D.我在我的电脑里做过同样的事情,两种情况下我都得到了29 fps。

//*********************************this是代码C++:

代码语言:javascript
复制
 #include <iostream>
    #include "opencv2/opencv.hpp"
    using namespace std;
    using namespace cv;

    time_t start, end; //variabile di tipo time_t , contiene tempo in sec. 
    // inizializzo contatore nella dichiarazione 
    int counter=0;

    int main()
    { time(&start);
    VideoCapture cap(1);
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); 

    if (!cap.isOpened())
    { cout << "could not capture";
    return 0; }

    Mat frame;
    namedWindow("camera", 1);
    char key = 'a';

    while(key != 27)
    {   cap.read( frame);
    imshow("camera", frame);

    //##################
    //time at the end of 1 show, Stop the clock and show FPS
    time(&end);
    ++counter;
    cout <<"fps: "<< counter/ difftime(end,start) <<endl <<endl;
    //##################

    key = waitKey(3); }

    destroyAllWindows();
    return 0;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-26 10:37:45

我建议通过V4L进行直接视频捕获,因为OpenCV可能会对RGB进行YUYV转换,以及其他涉及浮点计算的东西,而这些在这种硬件上是很昂贵的。我们在嵌入式系统上做了许多机器人项目,经验法则是,直接使用V4L或小型第三方库(如CMVision (http://www.cs.cmu.edu/~jbruce/cmvision/) )在嵌入式系统上进行图像处理总是更好。

票数 1
EN

Stack Overflow用户

发布于 2013-06-26 12:01:36

OpenCV是一个很重的API,下面的技巧可能会带来一些小的改进:

您可以禁用RGB转换:

代码语言:javascript
复制
 cap.set(CV_CAP_PROP_CONVERT_RGB , false);

如果默认帧率较低,则可以增加帧速率:

代码语言:javascript
复制
cap.set(CV_CAP_PROP_FPS , 60);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17314360

复制
相关文章

相似问题

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