2

我有一个 Raspberry Pi 并在其上安装了 OpenCV 和 Guvcview。当我打开 Guvcview 时,我得到 ~ 17-21 fps 但是当我使用 Opencv 在 C++ 中运行一个简单的程序(仅从网络摄像头和显示帧捕获)时,我只得到 6 fps。

怎么了?我需要配置 Opencv 才能使用 Guvcview 的配置吗?为什么 guvcview 获得 20 fps?我能做些什么?

谢谢。

PD 我在我的电脑上做了同样的事情,在这两种情况下我都得到了 29 fps。

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

 #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;
    }
4

2 回答 2

4

OpenCV 是一个重量级的 API,以下提示可能会带来一些小的改进:

您可以禁用 RGB 转换:

 cap.set(CV_CAP_PROP_CONVERT_RGB , false);

如果默认帧速率较低,您可以提高帧速率:

cap.set(CV_CAP_PROP_FPS , 60);
于 2013-06-26T12:01:36.383 回答
1

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

于 2013-06-26T10:37:45.103 回答