Cropping

Function Description

Crops the input image and outputs it to the Image object.

For details about the API, see Crop.

API Calling Process

Before calling the image cropping API, prepare the image object to be cropped.

Figure 1 Process of calling image processing (cropping) APIs

Key steps are demonstrated as follows:

  1. Perform global initialization by calling MxInit().
  2. Initialize ImageProcessor.

    Construct an ImageProcessor object and initialize the channel by calling InitVpcChannel(). If you skip this API, ImageProcessor automatically initializes the channel before cropping.

  3. Call the image decoding API to decode the input image.

    Decode the image based on services to generate an Image object that can be cropped. Subsequently, the image can be processed by using the image processing APIs to generate a final Image object to be cropped.

  4. Construct the cropping Rect and the output Image.

    Select the one-to-many, one-to-one, or many-to-many cropping mode based on service requirements to construct the corresponding input Rect and output Image.

  5. Select the synchronous or asynchronous cropping mode based on the service requirements.
    • Synchronous execution

      No stream is created. The input image and other parameters are passed to the Crop() API to obtain the image cropping result.

    • Asynchronous execution
      1. Create a stream. For details, see Asynchronous Invocation.
      2. Pass the input image, created stream, and other parameters to the Crop() API to obtain the image cropping result.
  6. Deinitialize the initialized global resources by calling MxDeInit().

Sample Code

The following is a code example of key steps of functions and features, which is for reference only and cannot be directly copied for compilation or running.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Initialization
MxInit();
{
    // Construct the image processing class.
    ImageProcessor imageProcessor(deviceId);

    // (Optional) Initialize the image processing channel.
    imageProcessor.InitVpcChannel();

    // Decode the image for Image generation.
    // Decoded image class
    Image decodedImage;
    // Perform decoding based on the image path.
    APP_ERROR ret = imageProcessor.Decode(imagePath, decodedImage);
    if (ret != APP_ERR_OK) {
        std::cout << "Decode failed." << std::endl;
    }

    // Perform cropping.
    // cropImage class
    Image cropImage;
    // Coordinate information of the cropped image
    Rect cropRect {0, 0, 640, 512};
    // Image cropping
    ret = imageProcessor.Crop(decodedImage, cropRect, cropImage);
    if (ret != APP_ERR_OK) {
        std::cout << "Crop failed." << std::endl;
    }
}
// Deinitialization
MxDeInit();