# 引入

bool generate(cv::String input,cv::OutputArray  output)


Mat result;
generate(input,result)


vector<Mat> result;
generate(input,result)


# 步骤

## 1.判断OutputArray类型

int output_type = output.kind();


enum {
KIND_SHIFT = 16,
FIXED_TYPE = 0x8000 << KIND_SHIFT,
FIXED_SIZE = 0x4000 << KIND_SHIFT,

NONE              = 0 << KIND_SHIFT,
MAT               = 1 << KIND_SHIFT,//!65536
MATX              = 2 << KIND_SHIFT,//!
STD_VECTOR        = 3 << KIND_SHIFT,//!196608
STD_VECTOR_VECTOR = 4 << KIND_SHIFT,//!262144
STD_VECTOR_MAT    = 5 << KIND_SHIFT,//!327680
EXPR              = 6 << KIND_SHIFT,//!393216
OPENGL_BUFFER     = 7 << KIND_SHIFT,//!458752
CUDA_HOST_MEM     = 8 << KIND_SHIFT,//!524288
CUDA_GPU_MAT      = 9 << KIND_SHIFT,//!589824
UMAT              =10 << KIND_SHIFT,//!655360
STD_VECTOR_UMAT   =11 << KIND_SHIFT,//!720896
STD_BOOL_VECTOR   =12 << KIND_SHIFT //!786432
};


if(output_type == _InputArray::STD_VECTOR_MAT){
...
}
else if(output_type == _InputArray::MAT){
...
}


## 2.Mat赋值

 output.assign(the_mat_you_need);


## 3.vector<Mat>赋值

/**size(vector的大小) ,1(具体我也不清楚), type(其中Mat的类型) */
output.create(result.size(), 1, result[0].type());


        /**get vector*/
std::vector<Mat> dst;
output.getMatVector(dst);


        for(size_t i = 0 ; i < result.size() ; i ++ ){
Mat cur_mat = result[i];
output.getMatRef(i) =cur_mat;
}


# 总体代码

bool QRCodeEncoder::generate(cv::String input,cv::OutputArray  output,int mode,
int version, int correction_level ,
int mask_type , int structure_number  ){
int output_type = output.kind();

if(my_qrcode.my_qrcodes.size() == 0)
return false;

vector<Mat> result = my_qrcode.my_qrcodes;
if(output_type == _InputArray::STD_VECTOR_MAT){
/**vector size*/
output.create(result.size(), 1, result[0].type());
/**get vector*/
std::vector<Mat> dst;
output.getMatVector(dst);

for(size_t i = 0 ; i < result.size() ; i ++ ){
Mat cur_mat = result[i];
output.getMatRef(i) =cur_mat;
}
}
else if(output_type == _InputArray::MAT){
output.assign(my_qrcode.my_qrcodes[0]);
}
return true;
}


# 参考资料:

https://qiita.com/fukushima1981/items/9bba9327c1d62779c7a4

• 点赞
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

不近视的兔子

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文
12-11 2516

03-13 60
08-14 4477
05-25 5909
04-13 8万+
03-05 1万+
04-14 7055