4.18. Bmcv

Bmcv封装了常用的图像处理接口,支持硬件加速。

4.18.1. 构造函数Bmcv()

初始化Bmcv

接口形式:
Bmcv(Handle handle);

参数说明:

  • handle: Handle

指定Bmcv使用的设备句柄。

4.18.2. bm_image_to_tensor

将BMImage/BMImageArray转换为Tensor。

接口形式1:
void bm_image_to_tensor(BMImage &img, Tensor &tensor);

Tensor bm_image_to_tensor(BMImage &img);

参数说明1:

  • image: BMImage

需要转换的图像数据。

  • tensor: Tensor

转换后的Tensor。

返回值说明1:

  • tensor: Tensor

返回转换后的Tensor。

接口形式2:
def bm_image_to_tensor(self,
        image: BMImageArray,
        tensor) -> Tensor

参数说明2:

  • image: BMImageArray

输入参数。需要转换的图像数据。

  • tensor: Tensor

输出参数。转换后的Tensor。

4.18.3. tensor_to_bm_image

将Tensor转换为BMImage/BMImageArray。

接口形式1:
void tensor_to_bm_image(Tensor &tensor, BMImage &img);

BMImage tensor_to_bm_image(Tensor &tensor);

参数说明1:

  • tensor: Tensor

输入参数。待转换的Tensor。

  • img : BMImage

转换后的图像。

返回值说明1:

  • image : BMImage

返回转换后的图像。

接口形式2:
template<std::size_t N> void   bm_image_to_tensor (BMImageArray<N> &imgs, Tensor &tensor);
template<std::size_t N> Tensor bm_image_to_tensor (BMImageArray<N> &imgs);

参数说明2:

  • tensor: Tensor

输入参数。待转换的Tensor。

  • img : BMImage | BMImageArray

输出参数。返回转换后的图像。

返回值说明2:

  • image : Tensor

返回转换后的tensor。

4.18.4. crop_and_resize

对图片进行裁剪并resize。

接口形式:
int crop_and_resize(
   BMImage                      &input,
   BMImage                      &output,
   int                          crop_x0,
   int                          crop_y0,
   int                          crop_w,
   int                          crop_h,
   int                          resize_w,
   int                          resize_h,
   bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

BMImage crop_and_resize(
   BMImage                      &input,
   int                          crop_x0,
   int                          crop_y0,
   int                          crop_w,
   int                          crop_h,
   int                          resize_w,
   int                          resize_h,
   bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
int crop_and_resize(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
BMImageArray<N> crop_and_resize(
    BMImageArray<N>              &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • crop_x0 : int

裁剪窗口在x轴上的起始点。

  • crop_y0 : int

裁剪窗口在y轴上的起始点。

  • crop_w : int

裁剪窗口的宽。

  • crop_h : int

裁剪窗口的高。

  • resize_w : int

图像resize的目标宽度。

  • resize_h : int

图像resize的目标高度。

  • resize_alg : bmcv_resize_algorithm

图像resize的插值算法,默认为bmcv_resize_algorithm.BMCV_INTER_NEAREST

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.5. crop

对图像进行裁剪。

接口形式:
int crop(
   BMImage                      &input,
   BMImage                      &output,
   int                          crop_x0,
   int                          crop_y0,
   int                          crop_w,
   int                          crop_h);


BMImage crop(
   BMImage                      &input,
   int                          crop_x0,
   int                          crop_y0,
   int                          crop_w,
   int                          crop_h);

template<std::size_t N>
int crop(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h);

template<std::size_t N>
BMImageArray<N> crop(
    BMImageArray<N>              &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • crop_x0 : int

裁剪窗口在x轴上的起始点。

  • crop_y0 : int

裁剪窗口在y轴上的起始点。

  • crop_w : int

裁剪窗口的宽。

  • crop_h : int

裁剪窗口的高。

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.6. resize

对图像进行resize。

接口形式:
int resize(
   BMImage                      &input,
   BMImage                      &output,
   int                          resize_w,
   int                          resize_h,
   bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

BMImage resize(
   BMImage                      &input,
   int                          resize_w,
   int                          resize_h,
   bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
int resize(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
BMImageArray<N> resize(
    BMImageArray<N>              &input,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • resize_w : int

图像resize的目标宽度。

  • resize_h : int

图像resize的目标高度。

  • resize_alg : bmcv_resize_algorithm

图像resize的插值算法,默认为bmcv_resize_algorithm.BMCV_INTER_NEAREST

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.7. vpp_crop_and_resize

利用VPP硬件加速图片的裁剪与resize。

接口形式:
int vpp_crop_and_resize(
    BMImage                      &input,
    BMImage                      &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

BMImage vpp_crop_and_resize(
    BMImage                      &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
int vpp_crop_and_resize(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
BMImageArray<N> vpp_crop_and_resize(
    BMImageArray<N>              &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • crop_x0 : int

裁剪窗口在x轴上的起始点。

  • crop_y0 : int

裁剪窗口在y轴上的起始点。

  • crop_w : int

裁剪窗口的宽。

  • crop_h : int

裁剪窗口的高。

  • resize_w : int

图像resize的目标宽度。

  • resize_h : int

图像resize的目标高度。

  • resize_alg : bmcv_resize_algorithm

图像resize的插值算法,默认为bmcv_resize_algorithm.BMCV_INTER_NEAREST

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.8. vpp_crop_and_resize_padding

利用VPP硬件加速图片的裁剪与resize,并padding到指定大小。

接口形式:
int vpp_crop_and_resize_padding(
    BMImage                      &input,
    BMImage                      &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

BMImage vpp_crop_and_resize_padding(
    BMImage                      &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
int vpp_crop_and_resize_padding(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
BMImageArray<N> vpp_crop_and_resize_padding(
    BMImageArray<N>              &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • crop_x0 : int

裁剪窗口在x轴上的起始点。

  • crop_y0 : int

裁剪窗口在y轴上的起始点。

  • crop_w : int

裁剪窗口的宽。

  • crop_h : int

裁剪窗口的高。

  • resize_w : int

图像resize的目标宽度。

  • resize_h : int

图像resize的目标高度。

  • padding : PaddingAtrr

padding的配置信息。

  • resize_alg : bmcv_resize_algorithm

图像resize的插值算法,默认为bmcv_resize_algorithm.BMCV_INTER_NEAREST

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.9. vpp_crop

利用VPP硬件加速图片的裁剪。

接口形式:
int vpp_crop(
   BMImage                      &input,
   BMImage                      &output,
   int                          crop_x0,
   int                          crop_y0,
   int                          crop_w,
   int                          crop_h);

BMImage vpp_crop(
   BMImage                      &input,
   int                          crop_x0,
   int                          crop_y0,
   int                          crop_w,
   int                          crop_h);

template<std::size_t N>
int vpp_crop(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h);

template<std::size_t N>
BMImageArray<N> vpp_crop(
    BMImageArray<N>              &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • crop_x0 : int

裁剪窗口在x轴上的起始点。

  • crop_y0 : int

裁剪窗口在y轴上的起始点。

  • crop_w : int

裁剪窗口的宽。

  • crop_h : int

裁剪窗口的高。

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.10. vpp_resize

利用VPP硬件加速图片的resize,采用最近邻插值算法。

接口形式1:
int vpp_resize(
    BMImage                      &input,
    BMImage                      &output,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

BMImage vpp_resize(
    BMImage                      &input,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
int vpp_resize(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
BMImageArray<N> vpp_resize(
    BMImageArray<N>              &input,
    int                          resize_w,
    int                          resize_h,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • resize_w : int

图像resize的目标宽度。

  • resize_h : int

图像resize的目标高度。

  • resize_alg : bmcv_resize_algorithm

图像resize的插值算法,默认为bmcv_resize_algorithm.BMCV_INTER_NEAREST

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.11. vpp_resize_padding

利用VPP硬件加速图片的resize,并padding。

接口形式:
int vpp_resize_padding(
    BMImage                      &input,
    BMImage                      &output,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

BMImage vpp_resize_padding(
   BMImage                      &input,
   int                          resize_w,
   int                          resize_h,
   PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
    int vpp_resize_padding(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

template<std::size_t N>
BMImageArray<N> vpp_resize_padding(
    BMImageArray<N>              &input,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • resize_w : int

图像resize的目标宽度。

  • resize_h : int

图像resize的目标高度。

  • padding : PaddingAtrr

padding的配置信息。

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

  • resize_alg : bmcv_resize_algorithm

图像resize的插值算法,默认为bmcv_resize_algorithm.BMCV_INTER_NEAREST

4.18.12. warp

对图像进行仿射变换。

接口形式:
int warp(
   BMImage                            &input,
   BMImage                            &output,
   const std::pair<
     std::tuple<float, float, float>,
     std::tuple<float, float, float>> &matrix);

BMImage warp(
   BMImage                            &input,
   const std::pair<
     std::tuple<float, float, float>,
     std::tuple<float, float, float>> &matrix);

template<std::size_t N>
int warp(
    BMImageArray<N>                          &input,
    BMImageArray<N>                          &output,
    const std::array<
        std::pair<
        std::tuple<float, float, float>,
        std::tuple<float, float, float>>, N> &matrix);

template<std::size_t N>
BMImageArray<N> warp(
    BMImageArray<N>                          &input,
    const std::array<
        std::pair<
        std::tuple<float, float, float>,
        std::tuple<float, float, float>>, N> &matrix);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • output : BMImage | BMImageArray

处理后的图像或图像数组。

  • matrix: std::pair<

    std::tuple<float, float, float>, std::tuple<float, float, float> >

2x3的仿射变换矩阵。

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.13. convert_to

对图像进行线性变换。

接口形式:
int convert_to(
   BMImage                      &input,
   BMImage                      &output,
   const std::tuple<
     std::pair<float, float>,
     std::pair<float, float>,
     std::pair<float, float>>   &alpha_beta);

BMImage convert_to(
   BMImage                      &input,
   const std::tuple<
     std::pair<float, float>,
     std::pair<float, float>,
     std::pair<float, float>>   &alpha_beta);

template<std::size_t N>
int convert_to(
    BMImageArray<N>              &input,
    BMImageArray<N>              &output,
    const std::tuple<
        std::pair<float, float>,
        std::pair<float, float>,
        std::pair<float, float>>   &alpha_beta);

template<std::size_t N>
BMImageArray<N> convert_to(
    BMImageArray<N>              &input,
    const std::tuple<
        std::pair<float, float>,
        std::pair<float, float>,
        std::pair<float, float>>   &alpha_beta);

参数说明:

  • input : BMImage | BMImageArray

待处理的图像或图像数组。

  • alpha_beta: std::tuple<

    std::pair<float, float>, std::pair<float, float>, std::pair<float, float> >

分别为三个通道线性变换的系数((a0, b0), (a1, b1), (a2, b2))。

  • output : BMImage | BMImageArray

输出参数。处理后的图像或图像数组。

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回处理后的图像或图像数组。

4.18.14. yuv2bgr

将图像的格式从YUV转换为BGR。

接口形式:
int yuv2bgr(
   BMImage                      &input,
   BMImage                      &output);

BMImage yuv2bgr(BMImage  &input);

参数说明:

  • input : BMImage | BMImageArray

待转换的图像。

返回值说明:

  • ret: int

返回0代表成功,其他代表失败。

  • output : BMImage | BMImageArray

返回转换后的图像。

4.18.15. rectangle

在图像上画一个矩形框。

接口形式:
int rectangle(
   BMImage                         &image,
   int                             x0,
   int                             y0,
   int                             w,
   int                             h,
   const std::tuple<int, int, int> &color,
   int                             thickness=1);

参数说明:

  • image : BMImage

待画框的图像。

  • x0 : int

矩形框在x轴上的起点。

  • y0 : int

矩形框在y轴上的起点。

  • w : int

矩形框的宽度。

  • h : int

矩形框的高度。

  • color : tuple

矩形框的颜色。

  • thickness : int

矩形框线条的粗细。

返回值说明:

如果画框成功返回0,否则返回非0值。

4.18.16. imwrite

将图像保存在特定文件。

接口形式:
int imwrite(
   const std::string &filename,
   BMImage           &image);

参数说明:

  • file_name : string

文件的名称。

  • output : BMImage

需要保存的图像。

返回值说明:

  • process_status : int

如果保存成功返回0,否则返回非0值。

4.18.17. get_handle

获取Bmcv中的设备句柄Handle。

接口形式:
Handle get_handle();

返回值说明:

  • handle: Handle

Bmcv中的设备句柄Handle。

4.18.18. crop_and_resize_padding

对图像进行裁剪并resize,然后padding。

接口形式:
int vpp_crop_and_resize_padding(
    BMImage                      &input,
    BMImage                      &output,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

BMImage vpp_crop_and_resize_padding(
    BMImage                      &input,
    int                          crop_x0,
    int                          crop_y0,
    int                          crop_w,
    int                          crop_h,
    int                          resize_w,
    int                          resize_h,
    PaddingAtrr                  &padding_in,
    bmcv_resize_algorithm        resize_alg = BMCV_INTER_NEAREST);

参数说明:

  • input : BMImage

待处理的图像。

  • output : BMImage

处理后的图像。

  • crop_x0 : int

裁剪窗口在x轴上的起始点。

  • crop_y0 : int

裁剪窗口在y轴上的起始点。

  • crop_w : int

裁剪窗口的宽。

  • crop_h : int

裁剪窗口的高。

  • resize_w : int

图像resize的目标宽度。

  • resize_h : int

图像resize的目标高度。

  • padding : PaddingAtrr

padding的配置信息。

  • resize_alg : bmcv_resize_algorithm

resize采用的插值算法。

返回值说明:

  • process_status : int

如果保存成功返回0,否则返回非0值。

  • output : BMImage

返回处理后的图像。

4.18.19. rectangle_

在图像上画一个矩形框。

接口形式:
int rectangle_(
   const bm_image                  &image,
   int                             x0,
   int                             y0,
   int                             w,
   int                             h,
   const std::tuple<int, int, int> &color, // BGR
   int                             thickness=1);

参数说明:

  • image : bm_image

待画框的图像。

  • x0 : int

矩形框在x轴上的起点。

  • y0 : int

矩形框在y轴上的起点。

  • w : int

矩形框的宽度。

  • h : int

矩形框的高度。

  • color : tuple

矩形框的颜色。

  • thickness : int

矩形框线条的粗细。

返回值说明:

如果画框成功返回0,否则返回非0值。

4.18.20. imwrite_

将图像保存在指定的文件。

接口形式:
int imwrite_(
   const std::string &filename,
   const bm_image     &image);

参数说明:

  • file_name : string

文件的名称。

  • output : bm_image

需要保存的图像。

返回值说明:

  • process_status : int

如果保存成功返回0,否则返回非0值。

4.18.21. convert_format

将图像的格式转换为output中的格式,并拷贝到output。

接口形式1:
int convert_format(
    BMImage          &input,
    BMImage          &output
);

参数说明1:

  • input : BMImage

输入参数。待转换的图像。

  • output : BMImage

输出参数。将input中的图像转化为output的图像格式并拷贝到output。

接口形式2:

将一张图像转换成目标格式。

BMImage convert_format(
    BMImage          &input,
    bm_image_format_ext image_format = FORMAT_BGR_PLANAR
);

参数说明2:

  • input : BMImage

待转换的图像。

  • image_format : bm_image_format_ext

转换的目标格式。

返回值说明2:

  • output : BMImage

返回转换后的图像。

4.18.22. vpp_convert_format

利用VPP硬件加速图片的格式转换。

接口形式1:
int vpp_convert_format(
    BMImage          &input,
    BMImage          &output
);

参数说明1:

  • input : BMImage

输入参数。待转换的图像。

  • output : BMImage

输出参数。将input中的图像转化为output的图像格式并拷贝到output。

接口形式2:

将一张图像转换成目标格式。

BMImage vpp_convert_format(
    BMImage          &input,
    bm_image_format_ext image_format = FORMAT_BGR_PLANAR
);

参数说明2:

  • input : BMImage

待转换的图像。

  • image_format : bm_image_format_ext

转换的目标格式。

返回值说明2:

  • output : BMImage

返回转换后的图像。

4.18.23. putText

在图像上添加text。

接口形式:
int putText(
    const BMImage                   &image,
    const std::string               &text,
    int                             x,
    int                             y,
    const std::tuple<int, int, int> &color, // BGR
    float                           fontScale,
    int                             thickness=1
);

参数说明:

  • input : BMImage

待处理的图像。

  • text: string

需要添加的文本。

  • x: int

添加的起始点位置。

  • y: int

添加的起始点位置。

  • color : tuple

字体的颜色。

  • fontScale: int

字号的大小。

  • thickness : int

字体的粗细。

返回值说明:

  • process_status : int

如果处理成功返回0,否则返回非0值。

4.18.24. putText_

接口形式:
int putText_(
    const bm_image                  &image,
    const std::string               &text,
    int                             x,
    int                             y,
    const std::tuple<int, int, int> &color, // BGR
    float                           fontScale,
    int                             thickness=1
);

参数说明:

  • input : bm_image

待处理的图像。

  • text: string

需要添加的文本。

  • x: int

添加的起始点位置。

  • y: int

添加的起始点位置。

  • color : tuple

字体的颜色。

  • fontScale: int

字号的大小。

  • thickness : int

字体的粗细。

返回值说明:

  • process_status : int

如果处理成功返回0,否则返回非0值。

4.18.25. image_add_weighted

将两张图像按不同的权重相加。

接口形式1:
int image_add_weighted(
    BMImage           &input1,
    float             alpha,
    BMImage           &input2,
    float             beta,
    float             gamma,
    BMImage           &output
);

参数说明1:

  • input0 : BMImage

输入参数。待处理的图像0。

  • alpha : float

输入参数。两张图像相加的权重alpha

  • input1 : BMImage

输入参数。待处理的图像1。

  • beta : float

输入参数。两张图像相加的权重beta

  • gamma : float

输入参数。两张图像相加的权重gamma

  • output: BMImage

输出参数。相加后的图像output = input1 * alpha + input2 * beta + gamma

接口形式2:
BMImage image_add_weighted(
    BMImage           &input1,
    float             alpha,
    BMImage           &input2,
    float             beta,
    float             gamma
);

参数说明2:

  • input0 : BMImage

输入参数。待处理的图像0。

  • alpha : float

输入参数。两张图像相加的权重alpha

  • input1 : BMImage

输入参数。待处理的图像1。

  • beta : float

输入参数。两张图像相加的权重beta

  • gamma : float

输入参数。两张图像相加的权重gamma

返回值说明2:

  • output: BMImage

返回相加后的图像output = input1 * alpha + input2 * beta + gamma

4.18.26. image_copy_to

进行图像间的数据拷贝

接口形式:
int image_copy_to(BMImage &input, BMImage &output, int start_x = 0, int start_y = 0);

template<std::size_t N>
int image_copy_to(BMImageArray<N> &input, BMImageArray<N> &output, int start_x = 0, int start_y = 0);

参数说明:

  • input: BMImage|BMImageArray

输入参数。待拷贝的BMImage或BMImageArray。

  • output: BMImage|BMImageArray

输出参数。拷贝后的BMImage或BMImageArray

  • start_x: int

输入参数。拷贝到目标图像的起始点。

  • start_y: int

输入参数。拷贝到目标图像的起始点。

4.18.27. image_copy_to_padding

进行input和output间的图像数据拷贝并padding。

接口形式:
int image_copy_to_padding(BMImage &input,
                        BMImage &output,
                        unsigned int padding_r,
                        unsigned int padding_g,
                        unsigned int padding_b,
                        int start_x = 0,
                        int start_y = 0);

template<std::size_t N>
int image_copy_to_padding(BMImageArray<N> &input,
                        BMImageArray<N> &output,
                        unsigned int padding_r,
                        unsigned int padding_g,
                        unsigned int padding_b,
                        int start_x = 0,
                        int start_y = 0);

参数说明:

  • input: BMImage|BMImageArray

输入参数。待拷贝的BMImage或BMImageArray。

  • output: BMImage|BMImageArray

输出参数。拷贝后的BMImage或BMImageArray

  • padding_r: int

输入参数。R通道的padding值。

  • padding_g: int

输入参数。G通道的padding值。

  • padding_b: int

输入参数。B通道的padding值。

  • start_x: int

输入参数。拷贝到目标图像的起始点。

  • start_y: int

输入参数。拷贝到目标图像的起始点。

4.18.28. nms

利用智能视觉深度学习处理器进行NMS

接口形式:
nms_proposal_t* nms(
    face_rect_t *input_proposal,
    int proposal_size,
    float threshold);

参数说明:

  • input_proposal: face_rect_t

数据起始地址。

  • proposal_size: int

待处理的检测框数据的大小。

  • threshold: float

nms的阈值。

返回值说明:

  • result: nms_proposal_t

返回NMS后的检测框数组。

4.18.29. drawPoint

在图像上画点。

接口形式:
int drawPoint(
    const BMImage &image,
    std::pair<int,int> center,
    std::tuple<unsigned char, unsigned char, unsigned char> color,   // BGR
    int radius);

参数说明:

  • image: BMImage

输入图像,在该BMImage上直接画点作为输出。

  • center: std::pair<int,int>

点的中心坐标。

  • color: std::tuple<unsigned char, unsigned char, unsigned char>

点的颜色。

  • radius: int

点的半径。

返回值说明

如果画点成功返回0,否则返回非0值。

4.18.30. drawPoint_

在图像上画点。

接口形式:
int drawPoint_(
    const bm_image  &image,
    std::pair<int,int> center,
    std::tuple<unsigned char, unsigned char, unsigned char> color,  // BGR
    int radius);

参数说明:

  • image: bm_image

输入图像,在该BMImage上直接画点作为输出。

  • center: std::pair<int,int>

点的中心坐标。

  • color: std::tuple<unsigned char, unsigned char, unsigned char>

点的颜色。

  • radius: int

点的半径。

返回值说明

如果画点成功返回0,否则返回非0值。

4.18.31. warp_perspective

对图像进行透视变换。

接口形式:
BMImage warp_perspective(
    BMImage                     &input,
    const std::tuple<
    std::pair<int,int>,
    std::pair<int,int>,
    std::pair<int,int>,
    std::pair<int,int>>       &coordinate,
    int                         output_width,
    int                         output_height,
    bm_image_format_ext         format = FORMAT_BGR_PLANAR,
    bm_image_data_format_ext    dtype = DATA_TYPE_EXT_1N_BYTE,
    int                         use_bilinear = 0);

参数说明:

  • input: BMImage

待处理的图像。

  • coordinate: std::tuple<

    std::pair<int,int>, std::pair<int,int>, std::pair<int,int>, std::pair<int,int> >

变换区域的四顶点原始坐标。

例如((left_top.x, left_top.y), (right_top.x, right_top.y), (left_bottom.x, left_bottom.y), (right_bottom.x, right_bottom.y))

  • output_width: int

输出图像的宽。

  • output_height: int

输出图像的高。

  • format: bm_image_format_ext

输出图像的格式。

  • dtype: bm_image_data_format_ext

输出图像的数据类型。

  • use_bilinear: int

是否使用双线性插值。

返回值说明:

  • output: BMImage

输出变换后的图像。

4.18.32. get_bm_data_type

将ImgDtype转换为Dtype

接口形式:
bm_data_type_t get_bm_data_type(bm_image_data_format_ext fmt);

参数说明:

  • fmt: bm_image_data_format_ext

需要转换的类型。

返回值说明:

  • ret: bm_data_type_t

转换后的类型。

4.18.33. get_bm_image_data_format

将Dtype转换为ImgDtype。

接口形式:
bm_image_data_format_ext get_bm_image_data_format(bm_data_type_t dtype);

参数说明:

  • dtype: bm_data_type_t

需要转换的Dtype

返回值说明:

  • ret: bm_image_data_format_ext

返回转换后的类型。

4.18.34. imdecode

从内存中载入图像到BMImage中。

接口形式:
BMImage imdecode(const void* data_ptr, size_t data_size);

参数说明:

  • data_ptr: void*

数据起始地址

  • data_size: bytes

数据长度

返回值说明:

  • ret: BMImage

返回解码后的图像。

4.18.35. imencode

编码一张图片,并返回编码后的数据。

接口形式1:
bool Bmcv::imencode(std::string& ext, bm_image &img, std::vector<u_char>& buf)
接口形式2:
bool Bmcv::imencode(std::string& ext, BMImage &img, std::vector<u_char>& buf)

参数说明:

  • ext: string

输入参数。图片编码格式。“.jpg”, “.png” 等。

  • image: bm_image/BMImage

输入参数。输入图片,只支持FORMAT_BGR_PACKET,DATA_TYPE_EXT_1N_BYTE的图片。

  • buf: std::vector<u_char>

输出参数。编码后放在系统内存中的数据。

返回值说明:

  • ret: bool

编码成功时返回0,失败时返回1。

4.18.36. fft

实现对Tensor的快速傅里叶变换。

接口形式:
std::vector<Tensor> fft(bool forward, Tensor &input_real);

std::vector<Tensor> fft(bool forward, Tensor &input_real, Tensor &input_imag);

参数说明:

  • forward: bool

是否进行正向迁移。

  • input_real: Tensor

输入的实数部分。

  • input_imag: Tensor

输入的虚数部分。

返回值说明:

  • ret: std::vector<Tensor>

返回输出的实数部分和虚数部分。

4.18.37. convert_yuv420p_to_gray

将YUV420P格式的图片转为灰度图。

接口形式1:
int convert_yuv420p_to_gray(BMImage& input, BMImage& output);

参数说明1:

  • input : BMImage

输入参数。待转换的图像。

  • output : BMImage

输出参数。转换后的图像。

接口形式2:

将YUV420P格式的图片转为灰度图。

int convert_yuv420p_to_gray_(bm_image& input, bm_image& output);

参数说明2:

  • input : bm_image

待转换的图像。

  • output : bm_image

转换后的图像。