int im_extract(in, out,
pbox)
IMAGE *in, *out;
IMAGE_BOX *pbox;
int im_extract_band(in, out, band)
IMAGE *in, *out;
int band;
int im_extract_bands(in, out, band, nbands)
IMAGE *in, *out;
int band;
int nbands;
int im_extract_area(in, out, x, y, w, h)
IMAGE *in, *out;
int x, y, w, h;
/* Used to define
a region of interest for
* im_extract() etc.
*/
typedef struct {
int xstart;
int ystart;
int xsize;
int ysize;
int chsel;
} IMAGE_BOX;
see <vips/vips.h>. if pbox->chsel is set to -1, all bands are extracted; otherwise pbox->chsel gives the band to extract, numbering from zero. The area specified by pbox must lie entirely within the image.
Works for any size image, any number of bands, any type. Works for LABPACK coded images too! But disallows band extraction in this case.
If used as part of a pipeline of partial image operations, im_extract() magically vanishes if chsel is -1. See the VIPS IO System Guide.
im_extract_area(3) is a convenience function which extracts an area from an image, leaving the bands the same.
im_extract_bands(3) takes nbands out of an image, starting from band band. So, for example, nbands == 2, bands == 1 will form a two band image from an RGB image, where the two bands are the G and the B bands.
im_extract_band(3) is a convenience function which extracts a single band from an image.