2016-04-12 15 views
0

私はビデオを録画するためにRaspberry Piカメラを使用しようとしています。私は録音を行うためにopenCVを使用したいと思います。スローフレームレートRaspicamからのビデオのキャプチャ

hereのraspicam/raspicam_cvライブラリを使用しています。私はカメラを開いてcv :: Matに読み込んでビデオを作成することができますが、フレームレートは1〜2Hzです。

私のコードはここにある:

 

#include <ctime> 
#include <iostream> 
#include <raspicam/raspicam_cv.h> 
#include <cstdio> 

using namespace std; 

int main (int argc,char **argv) { 

    time_t timer_begin,timer_end; 
    raspicam::RaspiCam_Cv Camera; 
    cv::Mat image; 
    int nCount=100; 

    cout<<"Opening Camera..."<<endl; 
    if (!Camera.open()) {cerr<<"Error opening the camera"<<endl;return -1;} 

    cout<<"Capturing "<<nCount<<" frames ...."<<endl; 
    time (&timer_begin); 

    cv::VideoWriter writer("Avideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 30, cv::Size(1280,960), true); 

for (int i=0; i<nCount; i++) { 
    char name[32] = {0}; 
     Camera.grab(); 
     Camera.retrieve (image); 
    writer.write(image);  
    } 
    cout<<"Stop camera..."<<endl; 
    Camera.release(); 

    time (&timer_end); /* get current time; same as: timer = time(NULL) */ 
    double secondsElapsed = difftime (timer_end,timer_begin); 
    cout<< secondsElapsed<<" seconds for "<< nCount<<" frames : FPS = "<< (float) ((float) (nCount) /secondsElapsed) <<endl; 

} 
 

私は私が達成したいものです30Hzで実行するように見える動画を見ることができるraspividプログラムを実行すると。

何らかの理由で、このコードを1280x960のサイズでしか使用できない場合があります。

誰かが私にすばらしいことになるヒントを教えていただけたら。あなたが他のサイズが必要な場合

Camera.get(CV_CAP_PROP_FRAME_WIDTH); 
Camera.get(CV_CAP_PROP_FRAME_HEIGHT); 

、あなたが設定しsetを使用することができます。たとえば

double RaspiCam_Cv::get (int propId); 

+0

まず、スローダウンを引き起こす行を特定してください。例えば、私はビデオライター 'writer.write(image);をコメントアウトし、これがどのように速度に影響を与えるかを見ていきます。 – aybassiouny

+0

'writer.write(image)'をコメントアウトすると、ビデオは正確に10Hzになります – James

+0

比較するraspividのcppコードのリンクを提供してください。 – aybassiouny

答えて

0

raspicam::RaspiCam_Cvのデフォルトサイズは、あなたが取得するgetを使用することができ、* 960 1280例えば、

Camera.set(CV_CAP_PROP_FRAME_WIDTH,640); 
Camera.set(CV_CAP_PROP_FRAME_HEIGHT,480); 

他のプロパティは、/セットを取得することができますが含まれます:

* CV_CAP_PROP_FRAME_WIDTH,CV_CAP_PROP_FRAME_HEIGHT, 
* CV_CAP_PROP_FORMAT: CV_8UC1 or CV_8UC3 
* CV_CAP_PROP_BRIGHTNESS: [0,100] 
* CV_CAP_PROP_CONTRAST: [0,100] 
* CV_CAP_PROP_SATURATION: [0,100] 
* CV_CAP_PROP_GAIN: (iso): [0,100] 
* CV_CAP_PROP_EXPOSURE: -1 auto. [1,100] shutter speed from 0 to 33ms 
* CV_CAP_PROP_WHITE_BALANCE_RED_V : [1,100] -1 auto whitebalance 
* CV_CAP_PROP_WHITE_BALANCE_BLUE_U : [1,100] -1 auto whitebalance 
* CV_CAP_PROP_MODE : [1,7] 0 auto mode 

PS:FPSとcv::VideoWriterのサイズはraspicam::RaspiCam_Cvと同じでなければなりませんが、そうでない場合は、cv::VideoWriterは動作しません。

関連する問題