码迷,mamicode.com
首页 > 其他好文 > 详细

合并多个cv::Mat类型,即合并多个图片的接口

时间:2018-06-05 11:26:59      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:mat   图像   访问   rect   数据拷贝   style   dep   type   数据   

1、
cv::Mat get_merage_image(cv::Mat cur_frame)
{
cv::Mat image_one=cur_frame;
cv::Mat image_two=cur_frame;
//创建连接后存入的图像,两幅图像按左右排列,所以列数+1
cv::Mat img_merge(image_one.rows,image_one.cols+
image_two.cols+1,image_one.type());
//图像拷贝,不能用Mat中的clone和copyTo函数,单幅图像拷贝可用,clone和copyTo不仅拷贝图像数据,还拷贝一///些其他的信息
//而现在是将两幅图像的数据拷贝到一副图像中,只拷贝图像数据
//因此用colRange来访问图像的列数据colRange第一参数是起始列,是从0开始索引,而第二个参数是结束列,
//从1开始索引,与我们以前使用的不同,因此,参数分别为0和image_one.cols
image_one.colRange(0,image_one.cols).
copyTo(img_merge.colRange(0,image_one.cols));
//第二幅图像拷贝,中间的一行作为两幅图像的分割线
image_two.colRange(0,image_two.cols).copyTo(
img_merge.colRange(image_one.cols+1,img_merge.cols));
return img_merge;
}
2、
cv::Mat get_merage_image2(cv::Mat cur_frame)
{
cv::Mat img_merge;
cv::Size size(cur_frame.cols + cur_frame.cols, MAX(cur_frame.rows, cur_frame.rows));
img_merge.create(size, CV_MAKETYPE(cur_frame.depth(), 3));
img_merge = cv::Scalar::all(0);
cv::Mat outImg_left, outImg_right;
//2.在新建合并图像中设置感兴趣区域
outImg_left = img_merge(cv::Rect(0, 0, cur_frame.cols, cur_frame.rows));
outImg_right = img_merge(cv::Rect(cur_frame.cols, 0, cur_frame.cols, cur_frame.rows));
//3.将待拷贝图像拷贝到感性趣区域中
cur_frame.copyTo(outImg_left);
cur_frame.copyTo(outImg_right);
return img_merge;
}
 

合并多个cv::Mat类型,即合并多个图片的接口

标签:mat   图像   访问   rect   数据拷贝   style   dep   type   数据   

原文地址:https://www.cnblogs.com/llfctt/p/9138488.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!