OpenCV实现图像合并主要有两种方法 
方法一:使用Mat.push_back方法将列数相同的图像加到最后一行 
方法二: 主要思路是将图像拷贝到待合并图像的感兴趣区域 
(1)新建一个要合并的图像(容器) 
(2)在新建合并图像中设置感兴趣区域 
(3)将待拷贝图像拷贝到感性趣区域中

法1.使用Mat.push_back方法将列数相同的图像加到最后一行

注意此方法只能将图像合并到底部 
示例代码:

#include<cv.h>
#include<highgui.h>
using namespace cv; int main()
{
Mat image1=imread("1.jpg");
Mat image2=imread("2.jpg");
if (image1.empty() || image2.empty())
{
printf("open error");
return ;
}
//push_back 方法将图像2拷贝到图像1的最后一行
Mat img_merge;
img_merge.push_back(image1);
img_merge.push_back(image2); namedWindow("img_merge", );
imshow("img_merge", img_merge); waitKey();
return ;
}

法2.将图像拷贝到待合并图像的感兴趣区域

此方法可以将图像拷贝到任意区域,位置由感兴趣区域决定 
示例代码:

#include<cv.h>
#include<highgui.h>
using namespace cv; int main()
{
Mat image1=imread("1.jpg");
Mat image2=imread("2.jpg");
if (image1.empty() || image2.empty())
{
printf("open error");
return ;
}
//1.新建一个要合并的图像
Mat img_merge;
Size size(image1.cols + image2.cols, MAX(image1.rows, image1.rows));
img_merge.create(size, CV_MAKETYPE(image1.depth(), ));
img_merge = Scalar::all();
Mat outImg_left, outImg_right;
//2.在新建合并图像中设置感兴趣区域
outImg_left = img_merge(Rect(, , image1.cols, image1.rows));
outImg_right = img_merge(Rect(image1.cols, , image1.cols, image1.rows));
//3.将待拷贝图像拷贝到感性趣区域中
image1.copyTo(outImg_left);
image2.copyTo(outImg_right);
namedWindow("image1", );
imshow("image1", img_merge);
waitKey();
return ;
}

最后上两张合并后的图片 
方法1合成效果如图 
 
方法2合成效果如图 

转自:https://blog.csdn.net/ktigerhero3/article/details/53105372

OpenCV实现任意大小图片的合并(转)的更多相关文章

  1. PHP图像裁剪为任意大小的图像,图像不变形,不留下空白

    <?php /** * 说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形 * 参数说明:输入 需要处理图片的 文件名,生成新图片的保存文件名,生成新图片的宽,生成新图片的高 */ fu ...

  2. javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印

    欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置. ...

  3. linux c使用socket进行http 通信,并接收任意大小的http响应(三)

    使用socket进行http通信的时候,浏览器返回的响应经常不是固定长度的,有时候很大,有些时候又非常小,十分讨厌.如果仅仅只是为了接收一小段信息,设置一个十分大的缓存,这样又会十分浪费.而且经常更改 ...

  4. linux shell 脚本攻略学习10--生成任意大小的文件和文本文件的交集与差集详解

    一.生成任意大小的文件(dd命令): 举例: amosli@amosli-pc:~/learn/example$ ; + records in + records out bytes ( MB/s a ...

  5. python中用opencv读取并显示图片

    一.读取并显示图片: import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读 ...

  6. 使用System.Drawing.Imaging.dll进行图片的合并

    在最近开发项目的时候有时候需要进行图片的合并,即将两张图片合并成功一张图片 合并图片的代码: #region 两张图片的合并 /// <summary > /// 将Image对象转化成二 ...

  7. 单个未知大小图片在div里面垂直居中的方法。。。添加辅助元素挤一下位置达到居中

    单个未知大小图片在div里面垂直居中的方法...添加辅助元素挤一下位置达到居中   <div class="ServicesLiTopPic"> <i>&l ...

  8. OpenCV问题集锦,图片显示不出来,WaitKey(0),imread()不能读图片,未经处理的异常,等问题集合

    昨天根据uc伯克利的人工图像分割文件.seg,显示图像的时候调用了OpenCV的库函数,图片都能用imwrite写好,但是imshow死活显示不出来. 今天早上发现原来是imshow()后面应该加上: ...

  9. 用 opencv和numpy进行图片和字符串互转,并保存至 json

    用 opencv和numpy进行图片和字符串互转,并保存至 json 转至 https://zhuanlan.zhihu.com/p/27349847 受 用 base64 进行图片和字符串互转,并保 ...

随机推荐

  1. .NET培训 | JAVA培训 | 最课程

    最课程(www.zuikc.com) 软件开发培训,在线软件培训的创新者!我们的创新在于: 1:一次购买,终身服务.每个最课程学员都会分配一位专职教师及一位监管教师,点对点跟进课程进度,直到您学会课程 ...

  2. caffe 生成检测框并绘图

    Step 1 使用训练好的模型检测图片: build/examples/ssd/ssd_detect.bin models/VGGNet/VOC0712/SSD_300x300/deploy.prot ...

  3. Lp空间

    在数学中,Lp空间是由p次可积函数组成的空间:对应的ℓp空间是由p次可和序列组成的空间.它们有时叫做勒贝格空间,以昂利·勒贝格命名(Dunford & Schwartz 1958,III.3) ...

  4. [转]如何在本地apache上架设多个站点

    http://dongxin1390008.blog.163.com/blog/static/3179247820094279581256/ 通常情况下,我们有时候需要架设多个站点 比如 我的web站 ...

  5. 标准输出中stderr和stdout的区别

    一.首先介绍一下三者printf,sprintf,fprintf的功能 1,printf就是标准输出,在屏幕上打印出一段字符串来. 2,sprintf就是把格式化的数据写入到某个字符串中.返回值字符串 ...

  6. 洛谷 P1123 取数游戏

    题目描述 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少. ...

  7. 数据库savepoint

    保存点(savepoint)是事务过程中的一个逻辑点,我们可以把事务回退到这个点,而不必回退整个事务. 语法 编辑 savepoint savepoint_name 这个命令就是在事务语句之间创建一个 ...

  8. 生成学习算法(Generative Learning algorithms)

    一.引言 前面我们谈论到的算法都是在给定\(x\)的情况下直接对\(p(y|x;\theta)\)进行建模.例如,逻辑回归利用\(h_\theta(x)=g(\theta^T x)\)对\(p(y|x ...

  9. Socket请求和Http请求的各自特点、区别及适用场景 (转)

    http://blog.csdn.net/hexinli/article/details/50500316 Socket实现服务器与客户端之间的物理连接,并进行数据传输.主要有TCP/UDP两个协议. ...

  10. AVR单片机命名规则

    ATmega64 TQFP封装现主要有以下型号:ATmega64L-8AU.ATmega64L-8AI.ATmega64-16AU.ATmega64-16AI. 型号标识说明: (1)带"L ...