0

次のタイプの画像を返す PointGrey カメラを使用しています。

typedef struct FlyCaptureImage
{
   // Rows, in pixels, of the image.
   int iRows;
   // Columns, in pixels, of the image.
   int iCols;
   // Row increment.  The number of bytes per row.
   int iRowInc;
   // Video mode that this image was captured with.  This member is only
   // populated when the image is returned from a grab call.
   FlyCaptureVideoMode videoMode;
   // Timestamp of this image.
   FlyCaptureTimestamp timeStamp;
   // Pointer to the actual image data.
   unsigned char* pData;
   //
   // If the returned image is Y8, Y16, RAW8 or RAW16, this flag indicates
   // whether it is a greyscale or stippled (bayer tiled) image.  In all
   // other modes, this flag has no meaning.
   //
   bool bStippled;
   // The pixel format of this image.
   FlyCapturePixelFormat pixelFormat;

   // This field is always 1 for single lens cameras.  This field is 
   // used to indicate the number of images contained in the structure 
   // when dealing with multi-imager systems such as the Bumblebee2 
   // or XB3?   int iNumImages;
   int iNumImages;

   // Reserved for future use.
   unsigned long  ulReserved[ 5 ];

} FlyCaptureImage;

私はOpenCV Matで画像を処理したいのですが、変換が必要です。画像内のすべての要素を反復してコピーすることに成功しました。しかし、それは遅いです。そのため、ポインターだけをコピーすることをお勧めします。これは、マットの初期化を使用した私のコードです。

MatImg = Mat::Mat(FCImg.iRows, FCImg.iCols, CV_8UC3, FCImg.pData);

これについてアドバイスをお願いします。正しいやり方ですか??この変換を、返された Mat 画像を受け取ったメイン プログラムとは別のクラスに入れました (例: mycam.getframe(image))。

ありがとう!

4

1 に答える 1