OpenCV实现多图像拼接成一张大图

 更新时间:2019年01月15日 11:09:53   作者:call_me_yang  
这篇文章主要为大家详细介绍了OpenCV实现多图像拼接成一张大图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了OpenCV实现多图像拼接成大图的具体代码,供大家参考,具体内容如下

开始尝试merge函数,具体如下:

定义四个矩阵A,B,C,D。得到矩阵combine。

#include<iostream>
#include <core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
 cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);
 cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);
 cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);
 cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);
 std::vector<cv::Mat> v1;
 v1.push_back(a);
 v1.push_back(b);
 v1.push_back(c);
 v1.push_back(d);
 cv::Mat combine;
 cv::merge(v1, combine);
 cout << "combine=" <<combine<< endl;
 cout<<"Size of combine:"<<combine.size()<<endl;
 
 system("pause");
 return 0;
}

结果如下:

显然,不是我们需要的结果。

尝试hconcat和vconcat函数,这两个函数opencv本身并没有。

详细介绍参见hconcatvconcat

具体实现如下:

#include <iostream>
#include <core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
 cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);
 cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);
 cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);
 cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);
 Mat combine,combine1,combine2;
 hconcat(a,b,combine1);
 hconcat(c,d,combine2);
 vconcat(combine1,combine2,combine);
 //namedWindow("Combine",CV_WINDOW_AUTOSIZE);
 //imshow("Combine",combine);
 cout<<"Combine=:"<<combine<<endl;
 system("pause");
 return 0;
}

结果:

图像拼接实现

#include <iostream>
#include <core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
 //cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);
 //cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);
 //cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);
 //cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);
 Mat combine,combine1,combine2;
 Mat a=imread("1.jpg");
 Mat b=imread("2.jpg");
 Mat c=imread("3.jpg");
 Mat d=imread("4.jpg");
 hconcat(a,b,combine1);
 hconcat(c,d,combine2);
 vconcat(combine1,combine2,combine);
 namedWindow("Combine",CV_WINDOW_AUTOSIZE);
 imshow("Combine",combine);
 waitKey(0);
 //cout<<"Combine=:"<<combine<<endl;
 system("pause");
 return 0;
}

图像结果显示如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言实现简单扫雷源码

    C语言实现简单扫雷源码

    这篇文章主要为大家详细介绍了C语言实现简单扫雷源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • C语言栈顺序结构实现代码

    C语言栈顺序结构实现代码

    一个能够自动扩容的顺序结构的栈 ArrStack 实例 (GCC编译),有需要的朋友可以参考一下
    2013-10-10
  • C语言高级教程之变长数组详解

    C语言高级教程之变长数组详解

    这篇文章主要介绍了C语言中变长数组的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • C++基础入门教程(五):new和delete

    C++基础入门教程(五):new和delete

    这篇文章主要介绍了C++基础入门教程(五):new和delete,本文讲解了动态分配内存、new和delete的配对、new、delete与reatin、release的关系、动态数组等内容,需要的朋友可以参考下
    2014-11-11
  • C++文件的数据写入和文件的数据读取的方法实现

    C++文件的数据写入和文件的数据读取的方法实现

    本文主要介绍了C++文件的数据写入和文件的数据读取的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python绘图之详解matplotlib

    Python绘图之详解matplotlib

    这篇文章主要介绍了Python绘图之详解matplotlib,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 深入浅析C/C++语言结构体指针的使用注意事项

    深入浅析C/C++语言结构体指针的使用注意事项

    这篇文章主要介绍了C/C++语言结构体指针的使用,大家都知道指针在32位系统占用4Byte,在64位系统占用8Byte,下面看下c语言代码例子
    2021-12-12
  • C语言简明清晰讲解结构体

    C语言简明清晰讲解结构体

    C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型
    2022-05-05
  • C++ Protobuf的学习使用指南

    C++ Protobuf的学习使用指南

    protocol buffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等,下面就来跟随小编一起简单学习一下它的使用吧
    2023-07-07
  • Qt快速读取大文件最后一行内容解决方案

    Qt快速读取大文件最后一行内容解决方案

    这篇文章主要给大家介绍了关于Qt如何快速读取大文件最后一行内容的解决方案,文中通过代码介绍的非常详细,对大家学习或者使用Qt具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01

最新评论