跳到主要内容

缩放

图片编码

功能介绍

将接口输出的Image对象编码为JPG格式的图片保存到指定的图片路径。

接口调用流程

用户需提前准备好待编码的Image对象,可以通过图片解码以及图像处理接口(抠图、缩放、补边等操作对应接口)输出,输出到本地图片。

图片编码调用流程参考如下:

图1 图片编码接口调用流程

关键步骤说明如下:

  1. 调用mx_init()接口进行全局初始化。

  2. ImageProcessor初始化。

    用户构造ImageProcessor对象,构造时需用户指定设备ID。

  3. 使用图片解码接口对输入图片进行解码。

    根据业务对图片进行解码,生成可编码的Image对象。后续可以通过图像处理接口对图片进行处理,生成最终需要编码的Image对象。

  4. 调用encode接口对输入图片进行编码。

    用户需根据实际业务情况输出图片数据,指定待输出的Image和输出路径。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝运行,仅供参考。

from mindx.sdk import base
from mindx.sdk.base import ImageProcessor, Rect, Image
## 图像解码
## 初始化ImageProcessor对象
imageProcessor = ImageProcessor(device_id)
image_path = "image_data/test_image.jpg"
## 读取图片路径进行解码,解码格式为nv12(YUV_SP_420)
decoded_image = imageProcessor.decode(image_path, base.nv12)

## 图像处理操作(抠图)
crop_para = [Rect(300, 100, 550, 350)]
croped_images = imageProcessor.crop(decoded_image, crop_para)

image_save_path = "croped_image.jpg"
imageProcessor.encode(croped_images[0], image_save_path)

父主题: 媒体数据处理

抠图

功能介绍

对输入的图像进行抠图操作,输出到Image对象中。

接口调用流程

使用抠图接口前,用户需准备好被抠图的图片对象。

图1 图像处理(抠图)接口调用流程

关键步骤说明如下:

  1. 调用mx_init()接口进行全局初始化。

  2. ImageProcessor初始化。

    用户构造ImageProcessor对象,构造时需用户指定设备ID。

  3. 使用图片解码接口对输入图片进行解码。

    根据业务对图片进行解码,生成可抠图的Image对象。后续可以通过图像处理接口对图片进行处理,生成最终需要抠图的Image对象。

  4. 构造抠图Rect以及输出Image。

    根据业务要求,选择一对多、一对一或多对多的抠图方式,构造对应的输入和输出Rect和Image。

  5. 将输入图片及其他参数传入crop接口,获取抠图结果。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝运行,仅供参考。

from mindx.sdk import base
from mindx.sdk.base import ImageProcessor, Rect, Image
## 图像解码
## 初始化ImageProcessor对象
imageProcessor = ImageProcessor(device_id)
image_path = "image_data/test_image.jpg"
## 读取图片路径进行解码,解码格式为nv12(YUV_SP_420)
decoded_image = imageProcessor.decode(image_path, base.nv12)

## 图像处理操作(抠图)
crop_para = [Rect(300, 100, 550, 350)]
croped_images = imageProcessor.crop(decoded_image, crop_para)

父主题: 媒体数据处理

缩放

功能介绍

对输入的图像进行缩放操作,输出到Image对象中。

接口调用流程

使用缩放接口前,用户需准备好被缩放的图片对象。

图1 图像处理(缩放)接口调用流程

关键步骤说明如下:

  1. 调用mx_init()接口进行全局初始化。

  2. ImageProcessor初始化。

    用户构造ImageProcessor对象,构造时需用户指定设备ID。

  3. 使用图片解码接口对输入图片进行解码。

    根据业务对图片进行解码,生成可缩放的Image对象。后续可以通过图像处理接口对图片进行处理,生成最终需要缩放的Image对象。

  4. 构造缩放参数和输出Image。

    根据业务要求,构造对应的输入和输出Size和Image。

  5. 将输入图片及其他参数传入resize接口,获取缩放结果。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝运行,仅供参考。

from mindx.sdk import base
from mindx.sdk.base import ImageProcessor, Size, Image
## 图像解码
## 初始化ImageProcessor对象
imageProcessor = ImageProcessor(device_id)
image_path = "image_data/test_image.jpg"
## 读取图片路径进行解码,解码格式为nv12(YUV_SP_420)
decoded_image = imageProcessor.decode(image_path, base.nv12)

## 图像缩放
## 缩放尺寸
size_para = Size(224, 224)
## 读取将解码后的Image类按尺寸进行缩放,缩放方式为华为自研的高阶滤波算法(huaweiu_high_order_filter)
resized_image = imageProcessor.resize(decoded_image, size_para, base.huaweiu_high_order_filter)

父主题: 媒体数据处理

补边

功能介绍

对输入的图像进行补边操作,输出到Image对象中。

接口调用流程

使用补边接口前,用户需准备好被补边的图片对象。

图1 图像处理(补边)接口调用流程

关键步骤说明如下:

  1. 调用mx_init()接口进行全局初始化。

  2. ImageProcessor初始化。

    用户构造ImageProcessor对象,构造时需用户指定设备ID。

  3. 使用图片解码接口对输入图片进行解码。

    根据业务对图片进行解码,生成可补边的Image对象。后续可以通过图像处理接口对图片进行处理,生成最终需要补边的Image对象。

  4. 构造补边参数。

    根据业务要求,构造对应的输入的“padDim”(表示补边上下左右的像素值)、“color”(补边颜色)。

  5. 调用padding接口对输入图像进行补边。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝运行,仅供参考。

from mindx.sdk import base
from mindx.sdk.base import ImageProcessor, Dim, Color, Image
## 图像解码
## 初始化ImageProcessor对象
imageProcessor = ImageProcessor(device_id)
image_path = "image_data/test_image.jpg"
## 读取图片路径进行解码,解码格式为nv12(YUV_SP_420)
decoded_image = imageProcessor.decode(image_path, base.nv12)

## 图像补边
## 补边尺寸
dim_para = Dim(100, 100, 100, 100)
## 读取将解码后的Image类按Dim进行补边,补边方式为重复最后一个元素
padded_image = imageProcessor.padding(decoded_image, dim_para, Color(0, 0, 0), base.border_replicate)

父主题: 媒体数据处理

抠图缩放

功能介绍

对输入的图像进行抠图并缩放操作,输出到Image对象中。

接口调用流程

使用抠图缩放接口前,用户需准备好被抠图缩放的图片对象。

图1 图像处理(抠图缩放)接口调用流程

关键步骤说明如下:

  1. 调用mx_init()接口进行全局初始化。

  2. ImageProcessor初始化。

    用户构造ImageProcessor对象,构造时需用户指定设备ID。

  3. 使用图片解码接口对输入图片进行解码。

    根据业务对图片进行解码,生成可抠图缩放的Image对象。后续可以通过图片处理接口对图片进行处理,生成最终需要抠图缩放的Image对象。

  4. 构造抠图缩放参数和输出Image。

    根据业务要求,选择单输入单抠图单缩放或单输入多抠图多缩放的方式,构造对应的输入的Rect、Size。

  5. 调用crop_resize接口对输入图片进行抠图缩放。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝运行,仅供参考。

from mindx.sdk import base
from mindx.sdk.base import ImageProcessor, Rect, Size, Image
## 图像解码
## 初始化ImageProcessor对象
imageProcessor = ImageProcessor(device_id)
image_path = "test_image.jpg"
## 读取图片路径进行解码,解码格式为nv12(YUV_SP_420)
decoded_image = imageProcessor.decode(image_path, base.nv12)

## 图像抠图并缩放
crop_resize_para = [(Rect(300, 100, 550, 350), Size(100, 100))]
crop_resize_image = imageProcessor.crop_resize(decoded_image, crop_resize_para)

父主题: 媒体数据处理

抠图贴图

功能介绍

对输入的图像进行抠图并粘贴到背景图片中的操作,输出到Image对象中。

接口调用流程

使用抠图贴图接口前,用户需准备好被抠图以及被粘贴的图片对象。

图1 图像处理(抠图贴图)接口调用流程

关键步骤说明如下:

  1. 调用mx_init()接口进行全局初始化。

  2. ImageProcessor初始化。

    用户构造ImageProcessor对象,构造时需用户指定设备ID。

  3. 使用图片解码接口对输入图片进行解码。

    根据业务对图片进行解码,生成可抠图贴图的Image对象。后续可以通过图像处理接口对图片进行处理,生成最终需要抠图贴图的Image对象。

  4. 构造抠图贴图参数和输出Image。

    1. 根据业务要求,设置被抠图片的矩阵并设置粘贴图片位置的矩阵,二者大小不一样时将自动进行缩放。
    2. 构造输出图片的背景图片,使用Image构造函数构造被粘贴图片或其他非空图片作为输出。
  5. 调用crop_paste对输入图片进行抠图并将图片粘贴至指定位置。

示例代码

以下为功能特性关键步骤的代码示例,不可以直接拷贝运行,仅供参考。

from mindx.sdk import base
from mindx.sdk.base import ImageProcessor, Rect, Image
## 图像解码
## 初始化ImageProcessor对象
imageProcessor = ImageProcessor(device_id)
image_path = "image_data/test_image.jpg"
## 读取图片路径进行解码,解码格式为nv12(YUV_SP_420)
decoded_image = imageProcessor.decode(image_path, base.nv12)

## 图像抠图并贴图
crop_paste_para = (Rect(300, 100, 550, 350), Rect(100, 100, 1500, 1500))
imageProcessor.crop_paste(decoded_image , crop_paste_para, paste_image)

父主题: 媒体数据处理

在线提单