2016-05-12 38 views
0

Intro:FLIR AX5(GigE Vision)カメラに接続し、一定間隔で画像をあらかじめ指定された場所に保存するプログラムを作成しようとしています私のPCで。これらの画像は温度情報を含む14ビットでなければなりません。後で、取得した温度データから意味のある結果を得るためにopenCVを使ってこれらの画像を処理する必要があります。保存方法eBus sdkを使用してFLIR AX5カメラの画像をRAW形式に変換

現在の位置:一定間隔で画像を保存できますが、取得している画像には14ビットのデータが含まれていませんが、代わりに8ビットのデータが含まれています。 PixelFormatを14ビット、CMOS、LVDTのビット深度を14ビットに変更した後でも、これはこれです。 matlabで結果の.binファイルを調べ、最大ピクセル値が255であることがわかりました。これは、画像が8ビット形式で保存されていることを意味しています。私はeBus SDKが提供するサンプルコードを使ってこの仕事をしています。このコードでは、私の要件に従っていくつかの変更を加えました。

温度データを読み取ることができる生の形式で画像を保存するのを助けてください。 P.P.関連コードはこちらです。

  // If the buffer contains an image, display width and height. 
      uint32_t lWidth = 0, lHeight = 0; 
      lType = lBuffer->GetPayloadType(); 

      cout << fixed << setprecision(1); 
      cout << lDoodle[ lDoodleIndex ]; 
      cout << " BlockID: " << uppercase << hex << setfill('0') << setw(16) << lBuffer->GetBlockID(); 

      if (lType == PvPayloadTypeImage) 
      { 

       // Get image specific buffer interface. 
       PvImage *lImage = lBuffer->GetImage(); 
       // Read width, height. 
       lWidth = lImage->GetWidth(); 
       lHeight = lImage->GetHeight(); 
       cout << " W: " << dec << lWidth << " H: " << lHeight; 
       lBuffer->GetImage()->Alloc(lWidth, lHeight, lBuffer->GetImage()->GetPixelType()); 
       if (lBuffer->GetBlockID()%50==0) { 
        char filename[]= IMAGE_SAVE_LOC; 
        std::string s=std::to_string(lBuffer->GetBlockID()); 
        char const *schar=s.c_str(); 
        strcat(filename, schar); 
        strcat(filename,".bin"); 
        lBufferWriter.Store(lBuffer,filename); 
       } 

答えて

0

ストリーミングが14ビットストリームに設定されていることを確認してください。

PvStreamを作成する前に、PixelFormatを14ビットに設定する必要があります。 PvDeviceオブジェクトの場合、_pvDeviceと呼ばれます。

_pvDevice->GetParameters()->SetEnumValue("PixelFormat", PvPixelMono14); 
_pvDevice->GetParameters()->SetEnumValue("DigitalOutput", 3); 
関連する問題