OpenCV学習メモVol.4 IplImage基礎知識

3067 ワード


参考書及び資料
  • 『学習OpenCV』
  • コンテンツの概要
    IplImageイメージタイプの基本情報を紹介します
     
    IplImage構造
    きほんこうぞう
     
    typedef struct _IplImage 
    { 
        int  nSize;             /* sizeof(IplImage) */ 
        int  ID;                /* version (=0)*/ 
        int  nChannels;         /* Most of OpenCV functions support 1,2,3 or 4 channels */ 
        int  alphaChannel;      /* Ignored by OpenCV */ 
        int  depth;             /* Pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S, 
                                   IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported.  */ 
        char colorModel[4];     /* Ignored by OpenCV */ 
        char channelSeq[4];     /* ditto */ 
        int  dataOrder;         /* 0 - interleaved color channels, 1 - separate color channels. 
                                   cvCreateImage can only create interleaved images */ 
        int  origin;            /* 0 - top-left origin, 
                                   1 - bottom-left origin (Windows bitmaps style).  */ 
        int  align;             /* Alignment of image rows (4 or 8). 
                                   OpenCV ignores it and uses widthStep instead.    */ 
        int  width;             /* Image width in pixels.                           */ 
        int  height;            /* Image height in pixels.                          */ 
        struct _IplROI *roi;    /* Image ROI. If NULL, the whole image is selected. */ 
        struct _IplImage *maskROI;      /* Must be NULL. */ 
        void  *imageId;                 /* "           " */ 
        struct _IplTileInfo *tileInfo;  /* "           " */ 
        int  imageSize;         /* Image data size in bytes 
                                   (==image->height*image->widthStep 
                                   in case of interleaved data)*/ 
        char *imageData;        /* Pointer to aligned image data.         */ 
        int  widthStep;         /* Size of aligned image row in bytes.    */ 
        int  BorderMode[4];     /* Ignored by OpenCV.                     */ 
        int  BorderConst[4];    /* Ditto.                                 */ 
        char *imageDataOrigin;  /* Pointer to very origin of image data 
                                   (not necessarily aligned) - 
                                   needed for correct deallocation */ 
    } 
    IplImage;

     
    しゅへんすう
    width,heightは画像の長さと幅である.
    depthは深さです.
    nchannelはチャネル数、選択範囲は1、2、3、4です.
    origin:座標系の原点位置を表し、オプション泥棒は左上または右下:IPL_ORIGIN_TL,IPL_ORIGIN_BL
    dataOrder:値の並び:IPL_DATA_ORDER_PIXELまたはIPL_DATA_ORDER_PIXEL.それぞれインターリーブ配列とチャネル配列です.OpenCVではインタリーブ配列がよく用いられる.
    イメージタイプ、奥行きマクロ
    マクロ#マクロ#
    画像のピクセルタイプ
    IPL_DEPTH_8U
    符号なし8ビット整数
    IPL_DEPTH_8S
    符号付き8ビット整数
    IPL_DEPTH_16S
    符号付き16ビット整数
    IPL_DEPTH_32S
    符号付き32ビット整数
    IPL_DEPTH_32F
    32ビット浮動小数点数単精度
    IPL_DEPTH_64F
    64ビット浮動小数点数デュアル精度
    ROIとCOI
    ROIは対象領域を表します
    COIは興味のある通路を代表します