4.12. Blend

图片拼接。可实现多张图片进行拼接。仅支持BM1688和CV186AH,SoC模式。

4.12.1. 构造函数Blend()

初始化Blend。

接口形式:
Blend(int src_h, std::vector<std::vector<short>> ovlap_attr, std::vector<std::vector<short>> bd_attr, std::vector<std::vector<string>> wgt_phy_mem, bm_stitch_wgt_mode wgt_mode)

参数说明:

  • src_h: int

输入图片的高度。输入图片的高度需一致。

  • ovlap_attr: std::vector<std::vector<short>>

输入图片重叠区域的左右边界。

  • bd_attr: std::vector<std::vector<short>>

输入图片的左右黑边属性。目前不支持该选项,设为空即可。

  • wgt_phy_mem: std::vector<std::vector<string>>

输入图片的权重文件。参考[获取图片的权重文件],获取图片权重文件。

  • wgt_mode: bm_stitch_wgt_mode

输入图片的拼接模式。目前支持以下两种拼接模式,通常选择BM_STITCH_WGT_YUV_SHARE。

  • BM_STITCH_WGT_YUV_SHARE: YUV share alpha and beta(1 alpha + 1 beta)

  • BM_STITCH_WGT_UV_SHARE: UV share alpha and beta(2 alpha + 2 beta)

4.12.2. process

判断源文件是否打开。

接口形式1:
int process(std::vector<BMImage*> &input, BMImage &output)

返回值说明

  • ret: int

返回图片是否拼接成功,0表示成功,其他表示失败。

参数说明1:

  • input: std::vector<BMImage*>

输入待拼接的BMImage。

  • output: BMImage

输出拼接后的BMImage。

接口形式2:
BMImage process(std::vector<BMImage*> &input)

返回值说明

  • output: BMImage

返回拼接后的BMImage。

参数说明2:

  • input: std::vector<BMImage*>

输入待拼接的BMImage。

示例代码:
#include "cvwrapper.h"

int main(){
    Handle handle(0);
    Decoder decoder("./left.jpg", False, 0);
    BMImage image_left;
    decoder.read(handle, image_left);

    Decoder decoder("./right.jpg", False, 0);
    BMImage image_right;
    decoder.read(handle, image_left);

    Blend blend_tmp(2240, {{2112},{2239}}, {}, {{"data/wgt/c01_alpha_444p_m2__0_2240x128.bin","data/wgt/c01_beta_444p_m2__0_2240x128.bin"}}, BM_STITCH_WGT_YUV_SHARE);
    BMImage bmimg = blend_tmp.process({image_left, image_right});
    sail::Bmcv bmcv(handle);
    int ret = bmcv.imwrite("result.jpg", img);
}