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就可以了。
但是不可以不填充数据,是会报错的。
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就可以了。
但是不可以不填充数据,是会报错的。
相关文章推荐
- OpenCV2.0以后:Mat类型和CvMat类型的互相转换(附:OpenCV矩阵合并)
- opencv中的矩阵解释,包括CvMat IplImage 、MAT 类型之间的转化
- 【OPENCV MFC】VS2012+MFC+Opencv2.4.9显示Mat类型图片
- OpenCV学习:Mat矩阵合并两张图像
- OpenCV之Mat——合并多个矩阵
- opencv中的矩阵解释,包括CvMat IplImage 、MAT 类型之间的转化
- OpenCV读取一张图片的Mat数据类型到.txt文件
- OpenCV读取一张图片的Mat数据类型到.txt文件
- opencv中Mat与IplImage,CVMat类型之间转换
- openCV,C++接口,cv::Mat矩阵数据元素读取
- OpenCV Mat数据类型及位数总结
- OpenCV - Mat、CvMat、IplImage类型浅析
- Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
- 激励函数简介 Tensorflow最简单的三层神经网络及matplotlib可视化 附激励函数常见类型
- OpenCV Mat数据类型指针ptr的使用
- 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
- OpenCV的Mat和Halcon的HObject类型互相转换
- OpenCV的下载安装及简单的Mat结构介绍
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- openCV图像矩阵Mat和二维数组的互相转换