Explanation of IplImage* img

decypher picture decypher · Jun 25, 2013 · Viewed 30.6k times · Source

I just started learning OpenCV with "Learning OpenCV Computer Vision with the OpenCV Library".

In the first example which demonstrates how to display a picture, it has a line

IplImage* img = cvLoadImage("name.type")

Although the book explains it, I still do not fully know what exactly IplImage* img does.

Does cvLoadImage loads the image to img which IplImage is pointing to? Can anyone explain this to me please? Thank you

Answer

Smash picture Smash · Jun 25, 2013
  • img is the name of the variable, might as well be blahblahblah;

  • IplImage is the type of the variable, it's just a struct that contains the image data itself plus some info (size, color depth, etc.) on the image;

    typedef struct _IplImage {
    int                  nSize;
    int                  ID;
    int                  nChannels;
    int                  alphaChannel;
    int                  depth;
    char                 colorModel[4];
    char                 channelSeq[4];
    int                  dataOrder;
    int                  origin;
    int                  align;
    int                  width;
    int                  height;
    struct _IplROI*      roi;
    struct _IplImage*    maskROI;
    void*                imageId;
    struct _IplTileInfo* tileInfo;
    int                  imageSize;
    char*                imageData;
    int                  widthStep;
    int                  BorderMode[4];
    int                  BorderConst[4];
    char*                imageDataOrigin;
    } IplImage;
    

For more info on IplImage: Other question about IplImage

  • cvLoadImage provides a pointer to an IplImage, which means it creates an IplImage when it loads it and returns you it's emplacement.

Do not forget to do cvReleaseImage(&img) when you are finished with it, if you do not want to have memory leaks.