多幅图像全景拼接

全景拼接在OpenCv中可以利用Stitch类方便实现,Stitching类将图像的矫正,对齐,图像映射,拼接,融合全部包括进去了。

这里有一个例子可以对三幅图像进行全景拼接:

// 图像拼接.cpp : 定义控制台应用程序的入口点。
//
#include <iostream>
#include <fstream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/stitching/stitcher.hpp"
#include <sstream>
#include <string>

using namespace std;
using namespace cv;

bool try_use_gpu = false;
vector<Mat> imgs;
string result_name;// = "result.jpg";

string IntToString(int num)
{
    stringstream ss;
    string s;
    ss << num;
    ss >> s;
    return s;
}

string str = "quanjing\\";
int main(int argc, char* argv[])
{
    result_name = str + "stichimg.jpg";
    for (int i = 1; i <=3; ++i)
    {
        Mat img = imread(str + IntToString(i) + ".jpg", 1);
        imgs.push_back(img);
    }

    Mat pano;
    Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
    Stitcher::Status status = stitcher.stitch(imgs, pano);

    if (status != Stitcher::OK)
    {
        cout << "Can‘t stitch images, error code = " << int(status) << endl;
        return -1;
    }

    namedWindow("pano", 0);
    imshow("pano", pano);
    imwrite(result_name, pano);
    waitKey(0);
    return 0;
}

测试了部分图片,发现相邻图像之间的重复区域过小会拼接失败。实际上,这些图像之间还是有比较多的重复区域,利用其它的拼接软件可以实现拼接。

因此,要获取好的拼接效果还要自行研究

部分疑问:

1 图像拼接中如何将多幅图像对准在同一像素坐标系下面

http://stackoverflow.com/questions/24563173/stitch-multiple-images-using-opencv-python

2 柱面投影模型的实现

3 图像的对比度调整融合

时间: 2025-01-08 04:28:38

多幅图像全景拼接的相关文章

VS2008+GDI实现多幅图像的GIF动画制作

相信很多朋友和我一样,经常由于这或那的原因,需制作一些特定格式的图像.如开发过程中需要给菜单.工具条及按钮等添加对应的图形标识,通过代码或资源导入方式加载这些图像时往往会有较高的格式要求. 比如,为按钮添加"bmp"类型图标,而手头只有jpg"格式的图像,此时若是简单地在图像编辑器里改变"图像大小或保存为后缀"bmp"格式,很多情况是会读取失败并终止程序的. 当然,在如今这个移动互联网如此发达的时代,早就有很多在线图像制作及转换的网站.普遍遇到的

为Joomla 2.5的连续插入多幅图像增加便捷方式

用过Joomla 2.5的朋友应该都知道插入许多图像时是比较麻烦的.点了文章下面的图片按钮,它会弹出个div,让你选择图片,每选一张,div就关闭.再选第二张的时候,它又要你重新选择目录,对于我经常要一次插入10张图片以上的很麻烦.(这里借用官网的图片,下面把这里叫sbox) 当然了,这是Joomla自带的插入图片的快捷按钮,我用的TinyMCE的图片插入更朴素: 我一直在找一种便于插入图片的方法. 本来是想升级editor到TinyMCE 4的,可是我的Joomla是Synology自带的应用

全景拼接

全景视频拼接关键技术 首先介绍一下流程: 1.选图,两张图的重叠区域不能太小,我个人认为最少不少于15%,这样才能保证有足够的角点匹配. 2.角点检测.这一步OpenCV提供了很多种方法,譬如Harris角点检测,而监测出的角点用CvSeq存储,这是一个双向链表. 3.角点提纯.在提纯的时候,需要使用RANSAC提纯.OpenCV自带了一个函数,FindHomography,不但可以提纯,还可以计算出3x3的转换矩阵.这个转换矩阵十分重要. 4.角点匹配.经过提纯后的角点,则需要匹配. 5.图像

matlab里plot画多幅图像、设置总标题、legend无边框

%%绘图 suptitle('公路')  %总标题subplot(2,2,1);plot(x,y11,'r-') hold onplot(x,y21,'b-')xlabel('方向')ylabel('能量')legend('草地','公路')set(legend,'edgecolor','none')legend('boxoff')  %legend无边框 %---subplot(2,2,2); plot(x,y12,'r-')hold onplot(x,y22,'b-')xlabel('方向'

【opencv】全景拼接

从OpenCV3.0正式版开始,features2d中的一些接口,搬到附加库xfeatures2d中了,其中就有SIFT.SURF的特征检测方法,但是正常下载安装OpenCV并不包含附加库,因为附加库不稳定,还在持续改善中,如果用xfeatures2d出现了迷のbug,那就这样吧... 附加库配置指南: https://nishantnath.com/2015/10/19/open-cv-3-x-adding-contrib-support-to-default-installation/ ht

为Joomla 2.5的连续插入多幅图像添加便捷方式

用过Joomla 2.5的朋友应该都知道插入很多图像时是比較麻烦的.点了文章以下的图片button,它会弹出个div,让你选择图片,每选一张.div就关闭. 再选第二张的时候,它又要你又一次选择文件夹.对于我常常要一次插入10张图片以上的非常麻烦. (这里借用官网的图片.以下把这里叫sbox) 当然了,这是Joomla自带的插入图片的快捷button.我用的TinyMCE的图片插入更朴素: 我一直在找一种便于插入图片的方法. 本来是想升级editor到TinyMCE 4的,但是我的Joomla是

多幅图像下载的时间效率问题

项目碰到了问题,就是多个头像下载的时候,会出现下载不全,下载慢的问题. 操作机制是,服务器返回URL, 本地将这些URL放在一个二维数组中,第一列存头像的URL,第二列存头像的本地文件地址. 1.首先是下载不全的问题,一般这种情况是下载头像的异步任务,出现了不连续性执行的情况,比如当下载图像的URL列表中出现有空字符串或者null时,异步任务会捕捉异常,不再继续接着往下下载,所以出现下载不全的问题.起初的解决方法是,在下载头像的异步任务中,循环下载的时候,如果取到的URL为空,则不执行调取下载图

机器学习进阶-案例实战-图像全景拼接-书籍SIFT特征点连接

书籍的SIFT特征点连接: 第一步:使用sift.detectAndComputer找出关键点和sift特征向量 第二步:构建BFMatcher()蛮力匹配器,bf.match匹配sift特征向量,使用的是欧式距离 第三步:根据匹配结果matches.distance对matches按照距离进行排序 第四步:进行画图操作,使用cv2.drawMatches进行画图操作 import cv2 import numpy as np #读入图片 imgA = cv2.imread('box.png',

基于OpenCV进行图像拼接原理解析和编码实现(提纲 代码和具体内容在课件中)

一.背景 1.1概念定义 我们这里想要实现的图像拼接,既不是如题图1和2这样的"图片艺术拼接",也不是如图3这样的"显示拼接",而是实现类似"BaiDU全景"这样的全部的或者部分的实际场景的重新回放. 对于图像拼接的流程有很多定义方式,本教程中主要介绍实现主流方法,总结梳理如下: 图像采集->投影变换->特征点匹配->拼接对准->融合->反投影 图像采集不仅仅指的是普通的图像数据的获取.为了能够拼接过程能够顺利进行.