2

私はRaspberry Piを持っていて、それにOpenCVとGuvcviewをインストールしました。Guvcview を開くと 17 ~ 21 fps になりますが、Opencv を使用して C++ で単純なプログラム (Web カメラからのキャプチャとフレームの表示のみ) を実行すると、6 fps しか得られません。

なにが問題ですか?Guvcview の構成を使用するには、Opencv を構成する必要がありますか? 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/ cmvision/ ) を使用して、組み込みシステムで画像処理を行います。

于 2013-06-26T10:37:45.103 に答える