opencv中Mat类型的图片或矩阵的简单合并



其实方法很简单。
Mat之间的赋值,如果不用clone或copyto的话,只是赋值指针。
所以,让某个Mat等于另外一个Mat的一部分的话。就可以对另一个Mat的一部分进行操作。
所以简单来讲。
创建一个Mat a
让a等于某一部分。
创建一个和合成后大小相同的Mat c
创建一个Mat b
让b指向Mat c的某一部分
让a copyto b
那么a的内容就复制到了c的该部分。
只要反复让a和b分别取值就可以完成了。
奉上代码
Mat m1;
Mat part;
Mat temp(size(x*n,y))
for (int i=0;i<n;i++)
{
m1=imread(file,0);
m2=temp(Rect(i*x,0,x,y));
m1.copyto(m2)
}
return temp

 

除此之外,如果需要合并的图像大小和通道数不一致。可以采用如下方法。

如果是通道不一致。

可以将通道少的转换为通道多的。

比如 Mat x;

cvtcolor(m1,x,CV_GRAY2BGR);

然后合并就可以了、。

如果大小不一致。

可以将小的resize成大的。使用

resize(m1,x,Size(m2.cols,m2.rows))

如果不希望失真。

可以把空缺的部位补零。

只要让m1等于剩下的那一部分,使用Mat.zeros就可以了。

但是不可以不填充数据,是会报错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值