●Ipl image
・自分が使うときに作ります

typedef struct _IplImage
{
    int  nSize;         /* sizeof(IplImage) */
    int  ID;            /* version (=0)*/
    int  nChannels;     /* チャンネル数。RGBなら3
                            OpenCV の関数では、主に 1〜4 を使います */
    int  alphaChannel;  /* OpenCV では使いません */
    int  depth;         /* 1画素の持つ型
                             IPL_DEPTH_8U  : 8 bit 自然数
                             IPL_DEPTH_8S  : 8 bit 整数
                             IPL_DEPTH_16S : 16 bit 整数
                             IPL_DEPTH_32S : 32 bit 整数
                             IPL_DEPTH_32F : 32 bit 実数
                             IPL_DEPTH_64F : 32 bit 実数 */
    char colorModel[4]; /* OpenCV では使いません */
    char channelSeq[4]; /* ditto */
    int  dataOrder;     /* 0 - RGB RGB RGB, 1 - RRR GGG BBB
                           OpenCV では、0 のみ使用可能 */
    int  origin;        /* 0 - 左上が原点, 1 - 左下が原点 */
    int  align;         /* データアライメント。
                           OpenCVでは参照しません。widthStep のみ参照します */
    int  width;         /* width。横の画素数 */
    int  height;        /* height。縦の画素数 */
    struct _IplROI *roi;/* Region Of Interest。
                           処理対象の領域を持つポインタ。使わないなら NULL */
    struct _IplImage *maskROI; /* must be NULL */
    void  *imageId;     /* ditto */
    struct _IplTileInfo *tileInfo; /* ditto */
    int  imageSize;     /* 画素値配列のバイトサイズ
                           (==image->height*image->widthStep)*/
    char *imageData;    /* アライメントされた画素値配列へのポインタ */
    int  widthStep;     /* アライメントした横のバイトサイズ */
    int  BorderMode[4]; /* OpenCV では使いません */
    int  BorderConst[4]; /* ditto */
    char *imageDataOrigin; /* 画素値配列へのポインタ(アライメントは不要)
                              deallocation には必要らしいが、NULLでイイと思う*/
}
IplImage;


・IplImageのインスタンスは、ライブラリ関数を使います

    IplImage* iplA = cvCreateImage( cvSize(size, size), IPL_DEPTH_8U, 1);
    cvReleaseImage(&iplA);

    IplImage * iplB = cvCreateImageHeader( cvSize(640, 480), IPL_DEPTH_8U, 1 );
    iplB->imageData = (unsigned char*)malloc(640 * 480);
    cvReleaseImageHeader(&iplB);