Visible to Intel only — GUID: GUID-78B3D886-0AB7-435E-BA2F-C5C046FF73D6
Visible to Intel only — GUID: GUID-78B3D886-0AB7-435E-BA2F-C5C046FF73D6
Copy
Copies pixel values between two buffers.
Syntax
Case 1: Copying all pixels of all color channels
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u_C1R | 16u_C1R | 16s_C1R | 32s_C1R | 32f_C1R |
8u_C3R | 16u_C3R | 16s_C3R | 32s_C3R | 32f_C3R |
8u_C4R | 16u_C4R | 16s_C4R | 32s_C4R | 32f_C4R |
8u_AC4R | 16u_AC4R | 16s_AC4R | 32s_AC4R | 32f_AC4R |
8u_C3AC4R | 16u_C3AC4R | 16s_C3AC4R | 32s_C3AC4R | 32f_C3AC4R |
8u_AC4C3R | 16u_AC4C3R | 16s_AC4C3R | 32s_AC4C3R | 32f_AC4C3R |
Case 2: Copying masked pixels only
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize,const Ipp8u* pMask, int maskStep);
Supported values for mod:
8u_C1MR | 16u_C1MR | 16s_C1MR | 32s_C1MR | 32f_C1MR |
8u_C3MR | 16u_C3MR | 16s_C3MR | 32s_C3MR | 32f_C3MR |
8u_C4MR | 16u_C4MR | 16s_C4MR | 32s_C4MR | 32f_C4MR |
8u_AC4MR | 16u_AC4MR | 16s_AC4MR | 32s_AC4MR | 32f_AC4MR |
Case 3: Copying a selected channel in a multi-channel image
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u_C3CR | 16u_C3CR | 16s_C3CR | 32s_C3CR | 32f_C3CR |
8u_C4CR | 16u_C4CR | 16s_C4CR | 32s_C4CR | 32f_C4CR |
Case 4: Copying a selected channel to a one-channel image
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u_C3C1R | 16u_C3C1R | 16s_C3C1R | 32s_C3C1R | 32f_C3C1R |
8u_C4C1R | 16u_C4C1R | 16s_C4C1R | 32s_C4C1R | 32f_C4C1R |
Case 5: Copying a one-channel image to a multi-channel image
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u_C1C3R | 16u_C1C3R | 16s_C1C3R | 32s_C1C3R | 32f_C1C3R |
8u_C1C4R | 16u_C1C4R | 16s_C1C4R | 32s_C1C4R | 32f_C1C4R |
Case 6: Splitting color image into separate planes
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* const pDst[3], int dstStep, IppiSize roiSize);
Supported values for mod:
8u_C3P3R | 16u_C3P3R | 16s_C3P3R | 32s_C3P3R | 32f_C3P3R |
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* const pDst[4], int dstStep, IppiSize roiSize);
Supported values for mod:
8u_C4P4R | 16u_C4P4R | 16s_C4P4R | 32s_C4P4R | 32f_C4P4R |
Case 7: Composing color image from separate planes
IppStatus ippiCopy_<mod>(const Ipp<datatype>* const pSrc[3], int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u_P3C3R | 16u_P3C3R | 16s_P3C3R | 32s_P3C3R | 32f_P3C3R |
IppStatus ippiCopy_<mod>(const Ipp<datatype>* const pSrc[4], int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u_P4C4R | 16u_P4C4R | 16s_P4C4R | 32s_P4C4R | 32f_P4C4R |
Case 8: Copying all pixels of all color channels with platform-aware functions
IppStatus ippiCopy_<mod>(const Ipp<datatype>* pSrc, IppSizeL srcStep, Ipp<datatype>* pDst, IppSizeL dstStep, IppiSizeL roiSize);
Supported values for mod:
8u_C1R_L | 16s_C1R_L | 16u_C1R_L | 32s_C1R_L | 32f_C1R_L |
8u_C3R_L | 16s_C3R_L | 16u_C3R_L | 32s_C3R_L | 32f_C3R_L |
8u_C4R_L | 16s_C4R_L | 16u_C4R_L | 32s_C4R_L | 32f_C4R_L |
8u_AC4R_L | 16s_AC4R_L | 16u_AC4R_L | 32s_AC4R_L | 32f_AC4R_L |
Include Files
ippi.h
Flavors with the _L suffix: ippi_l.h
Domain Dependencies
Headers: ippcore.h, ippvm.h, ipps.h
Libraries: ippcore.lib, ippvm.lib, ipps.lib
Parameters
pSrc |
Pointer to the source image ROI. The array storing pointers to the color planes of the source planar image. |
srcStep |
Distance, in bytes, between the starting points of consecutive lines in the source image. |
pDst |
Pointer to the destination image ROI. The array storing pointers to the color planes of the destination planar image. |
dstStep |
Distance, in bytes, between the starting points of consecutive lines in the destination image. |
roiSize |
Size of the source and destination ROI in pixels. |
pMask |
Pointer to the mask image buffer. |
maskStep |
Distance, in bytes, between the starting points of consecutive lines in the mask image buffer. |
Description
This function operates with ROI.
This function copies data from the source image pSrc to the destination image pDst. Copying pixels selected by a mask pMask is supported as well.
For masked operation (Case 2), the function writes pixel values in the destination buffer only if the spatially corresponding mask array value is non-zero (as illustrated in the code example below).
Function flavors operating with the channel of interest (descriptor C) copy only one specified channel of a source multi-channel image to the channel of another multi-channel image (see Case 3). For these functions, the pSrc and pDst pointers point to the starts of ROI buffers in the specified channels of source and destination images, respectively.
Some function flavors add alpha channel to the 3-channel source image (flavors with the _C3AC4R descriptor), or discard alpha channel from the source image (flavors with the _AC4C3R descriptor) - see Case 1.
Special function flavors copy data from only one specified channel pSrc of a multi-channel image to a one-channel image pDst (see Case 4), as well as to copy data from a one-channel image pSrc to only one specified channel of a multi-channel image pDst (see Case 5).
You can also use the ippiCopy function to convert the interleaved color image into separate planes and vice versa (see Case 6 and Case 7).
Return Values
ippStsNoErr |
Indicates no error. Any other value indicates an error or a warning. |
ippStsNullPtrErr |
Indicates an error when any of the specified pointers is NULL, with the exception of second mode in Case 4. |
ippStsSizeErr |
Indicates an error condition if roiSize has a field with a zero or negative value. |
ippStsStepErr |
Indicates an error condition if srcStep or dstStep is less than roiSize.width * <pixelSize> for Cases 4 and 5. |
Example
The code example below shows how to copy masked data.
IppStatus copyWithMask( void ) { Ipp8u mask[3*3], x[5*4], y[5*4]={0}; IppiSize imgroi={5,4}, mskroi={3,3}; ippiSet_8u_C1R( 3, x, 5, imgroi ); /// set mask with a hole in upper left corner ippiSet_8u_C1R( 1, mask, 3, mskroi ); mask[0] = 0; /// copy roi with mask return ippiCopy_8u_C1MR( x, 5, y, 5, mskroi, mask, 3 ); }
The destination image y contains:
00 03 03 00 00 03 03 03 00 00 03 03 03 00 00 00 00 00 00 00