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

本文介绍了两种使用OpenCV实现图像合并的方法。第一种方法通过直接操作图像列的方式进行合并,并在中间添加一行作为分割线。第二种方法则是在新建的图像中设置感兴趣区域,并将待合并的图像拷贝到这些区域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}
 

转载于:https://www.cnblogs.com/llfctt/p/9138488.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值