Opencv实现多幅图片拼接在一起

Posted 深秋雨滴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opencv实现多幅图片拼接在一起相关的知识,希望对你有一定的参考价值。

未经本人允许,不得转载

先直接上代码,文末会有具体分析,代码也有相应注释。

本文是以三张图片横向排列拼接为例 ,其他的也是类似

IplImage* paletteImageRam1, paletteImageRam2, paletteImageRam3;   //此处是定义了三个图片,实际使用时应当载入自己的三幅图片

//将三个图片拼接在一起
double width,height;
width = double(paletteImageRam1->width) *3.0;   //第一幅图片的宽度乘以3就是拼接完的图像宽度,此处假设三张图的宽高都一样,实际使用可以将各自图像的宽度相加
height = double(paletteImageRam1->height);        //第一幅图像的高度

IplImage* des = cvCreateImage(cvSize(width,height), paletteImageRam1->depth, paletteImageRam1->nChannels);   //生成一个三幅拼接用的容器图片
cvSetImageROI(des, cvRect(0, 0,paletteImageRam1->width, height)); //设置容器图片中感兴趣的部分,前两个左边0,0代表感兴趣的区域的起点,后两个代表感兴趣区域的宽高                                                 
cvCopy(paletteImageRam1, des);      //将第一幅图像放到感兴趣的区域里面,也就是第一个方格
cvResetImageROI(des);                   
cvSetImageROI(des, cvRect(paletteImageRam1->width, 0,paletteImageRam1->width,height));
cvCopy(paletteImageRam2, des);
cvResetImageROI(des);
cvSetImageROI(des, cvRect(paletteImageRam1->width*2, 0,paletteImageRam1->width,height));
cvCopy(paletteImageRam3, des);
cvResetImageROI(des);

//des就是最后拼接得到的图像

/************************/

// opencv里面cvSetImageROI(感兴趣的区域的起点x,感兴趣的区域的起点y,感兴趣的区域宽度w,感兴趣的区域高度h)函数,是用来设置一个操作区域的,就是说设定了这个区域然后再将图复制到这个里面来,然后再分割第二个区域,填进去

/***********************/

 

以上是关于Opencv实现多幅图片拼接在一起的主要内容,如果未能解决你的问题,请参考以下文章

图像配准使用OpenCV进行多图配准拼接

图像配准使用OpenCV进行多图配准拼接

图像配准使用OpenCV进行多图配准拼接

OpenCV下实现单窗口显示多幅图像的C++源码

OpenMP并行编程应用—加速OpenCV图像拼接算法

OpenCV图像拼接 原理介绍 C++ OpenCV 案例实现