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)函数,是用来设置一个操作区域的,就是说设定了这个区域然后再将图复制到这个里面来,然后再分割第二个区域,填进去

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

时间: 2024-09-26 21:02:09

Opencv实现多幅图片拼接在一起的相关文章

opencv图像裁剪与拼接

舍弃不够整除的部分,对大尺寸的图像裁剪成m行n列的小图,将小图相对大图的行列位置存储在图像名中 之后对小图进行目标检测标注目标位置 再将小图依次拼接,铺成大图 1 # coding=utf-8 2 from PIL import Image 3 # pil paste可以进行图片拼接 4 import cv2 5 import numpy as np 6 import glob as glob 7 import os 8 """ 9 输入:图片路径(path+filename

qt+opencv对两幅图片进行融合

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 源代码: [cpp] view plain copy #include "widget.h" #include "ui_widget.h" #include "public.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(

OpenCV之cv2函数 2

1.主要函数 1. cv2.imread():读入图片,共两个参数,第一个参数为要读入的图片文件名,第二个参数为如何读取图片,包括 cv2.IMREAD_COLOR:读入一副彩色图片:cv2.IMREAD_GRAYSCALE:以灰度模式读入图片:cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道. PS:调用opencv,就算图像的路径是错的,OpenCV 也不会提醒你的,但是当你使用命 令print(img)时得到的结果是None. 2.cv2.imshow():创

python OpenCV使用

关于OpenCV简介  OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法.OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口. 在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常

关于automatic_Panoramic_Image_Stitching_using_Invariant_features 的阅读笔记(2)

接上一篇: http://www.cnblogs.com/letben/p/5446074.html#3538201 捆绑调整 (好开心有同学一起来看看这些问题,要不然就是我自己的话,我应该也不会看的吧,所以某种程度上说,他也帮了我呢...吼吼吼) 关于捆绑调整,由于摄影设备本身的焦距.光圈等等问题,是容易导致图片集的结果不一致的.[但是原文里面提到的相机参数又包括什么呢? TODO ]那么问题就来了,如果要进行拼接,第一幅图拼接第二幅的时候,会遵从一个标准(比如,以第一幅为标准的亮度,或者是第

(转)C++ main函数中参数argc和argv含义及用法

原博地址:https://blog.csdn.net/dcrmg/article/details/51987413 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个: 简单用法示例,新建工程键代码: #include <iostr

全景视频拼接(二)--OpenCV源码解析

本文参考:http://blog.csdn.net/skeeee/article/details/19480693,做了一定修改和补充. 一.stitching_detail程序运行流程 1.命令行调用程序,输入源图像以及程序的参数 2.特征点检测,判断是使用surf还是orb,默认是surf. 3.对图像的特征点进行匹配,使用最近邻和次近邻方法,将两个最优的匹配的置信度保存下来. 4.对图像进行排序以及将置信度高的图像保存到同一个集合中,删除置信度比较低的图像间的匹配,得到能正确匹配的图像序列

opencv拼接相关1

这里面都是一些比较杂的东西,没什么实际意义.主要是为了,后面能跑一个程序: Stitcher: 抠细节: http://docs.opencv.org/2.4.2/modules/stitching/doc/high_level.html?highlight=stitcher#stitcher Stitcher是啥? class Stitcher High level image stitcher. It’s possible to use this class without being aw

OpenCv实现两幅图像的拼接

直接贴上源码 来源:http://www.myexception.cn/image/1498389.html 实验效果 Left.jpg???????????????????????????? right.jpg ImageMatch.jpg ? #include <iostream> #include <iomanip> #include "opencv2/core/core.hpp" #include "opencv2/objdetect/objd