您的位置:首页 > 运维架构

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

2012-10-09 08:31 302 查看
其实方法很简单。

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就可以了。

但是不可以不填充数据,是会报错的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  file ini c