For single-channel byte images:
iplimage* img = cvcreateimage (Cvsize (640,480), ipl_depth_8u,1); int height = img->height;int width = Img->width;int Step = img->widthstep;uchar* Data = (UCHAR *) img->imagedata;//Note here that step cannot be changed to width, The data is 4-byte aligned, and step refers to the number of bytes per line of pixels data[i*step+j] = 100;
For multi-channel byte images:
iplimage* img = cvcreateimage (Cvsize (640,480), ipl_depth_8u,3); int height = img->height;int width = Img->width;int Step = img->widthstep;int Channels = img->nchannels;uchar* Data = (UCHAR *) img- >IMAGEDATA;DATA[I*STEP+J*CHANNELS+K] = 100;
For multichannel floating-point images (assuming that the image data takes 4-byte (32-bit) line alignment):
iplimage* img = cvcreateimage (Cvsize (640,480), ipl_depth_32f,3); int height = img->height;int width = Img->width;int Step = img->widthstep;int Channels = img->nchannels;float * Data = (float *) img- >IMAGEDATA;DATA[I*STEP+J*CHANNELS+K] = 100;
"OpenCV" simple and efficient access to image pixels