opencv实现几幅图像拼接成一整幅大图

opencv实现几幅图像拼接成一整幅大图

标签: 博客opencv
9846人阅读 评论(3) 收藏 举报
本文章已收录于:
分类:
作者同类文章X

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

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

    [cpp] view plaincopy
    print?
    1. <span style="font-size:18px">#include<iostream>  
    2. #include <core/core.hpp>  
    3. #include <opencv2/imgproc/imgproc.hpp>  
    4. #include <opencv2/highgui/highgui.hpp>  
    5. using namespace std;  
    6. using namespace cv;  
    7. int main()  
    8. {  
    9.     cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);  
    10.     cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);  
    11.     cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);  
    12.     cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);  
    13.     std::vector<cv::Mat> v1;  
    14.     v1.push_back(a);  
    15.     v1.push_back(b);  
    16.     v1.push_back(c);  
    17.     v1.push_back(d);  
    18.     cv::Mat combine;  
    19.     cv::merge(v1, combine);  
    20.     cout << "combine=" <<combine<< endl;  
    21.     cout<<"Size of combine:"<<combine.size()<<endl;  
    22.   
    23.     system("pause");  
    24.     return 0;  
    25. }</span>  
    #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本身并没有。

    详细介绍参见hconcat和vconcat。


    具体实现如下:

    [cpp] view plaincopy
    print?
    1. <span style="font-size:18px">#include <iostream>  
    2. #include <core/core.hpp>  
    3. #include <opencv2/imgproc/imgproc.hpp>  
    4. #include <opencv2/highgui/highgui.hpp>  
    5. using namespace std;  
    6. using namespace cv;  
    7. int main()  
    8. {  
    9.     cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);  
    10.     cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);  
    11.     cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);  
    12.     cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);  
    13.     Mat combine,combine1,combine2;  
    14.     hconcat(a,b,combine1);  
    15.     hconcat(c,d,combine2);  
    16.     vconcat(combine1,combine2,combine);  
    17.     //namedWindow("Combine",CV_WINDOW_AUTOSIZE);  
    18.     //imshow("Combine",combine);  
    19.     cout<<"Combine=:"<<combine<<endl;  
    20.     system("pause");  
    21.     return 0;  
    22. }</span>  
    #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;
    }

    结果:


    图像拼接实现

    [cpp] view plaincopy
    print?
    1. #include <iostream>  
    2. #include <core/core.hpp>  
    3. #include <opencv2/imgproc/imgproc.hpp>  
    4. #include <opencv2/highgui/highgui.hpp>  
    5. using namespace std;  
    6. using namespace cv;  
    7. int main()  
    8. {  
    9.     //cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);  
    10.     //cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);  
    11.     //cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);  
    12.     //cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);  
    13.     Mat combine,combine1,combine2;  
    14.     Mat a=imread("1.jpg");  
    15.     Mat b=imread("2.jpg");  
    16.     Mat c=imread("3.jpg");  
    17.     Mat d=imread("4.jpg");  
    18.     hconcat(a,b,combine1);  
    19.     hconcat(c,d,combine2);  
    20.     vconcat(combine1,combine2,combine);  
    21.     namedWindow("Combine",CV_WINDOW_AUTOSIZE);  
    22.     imshow("Combine",combine);  
    23.     waitKey(0);  
    24.     //cout<<"Combine=:"<<combine<<endl;  
    25.     system("pause");  
    26.     return 0;  
    27. }  
    #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;
    }


    图像结果显示如下:





    0
    0

    我的同类文章

    http://blog.csdn.net
    • 图像处理形态学椭圆形模板结构元素的设计与实现2015-08-25
    • OpenCV重复播放摄像头视频,循环播放摄像头(视频)文件,循环播放视频中某一段视频2014-12-02
    • OpenCV读取多幅图片,读取系列图片,读取文件夹中指定图像类型的系列图片2014-11-30
    • 边缘检测——Sobel2014-11-24
    • 利用OpenCV实现——目标跟踪方法(一)2014-08-30
    • OpenCV遍历文件夹中所有图像2014-03-10
    • OpenCV Viz 3D虚拟空间模块2015-04-30
    • OpenCV搜索文件夹中的图片并保存图片路径和信息2014-11-30
    • OpenCV图像几何变换——转置,镜像,倒置2014-11-30
    • 直方图均衡化2014-11-02
    • 保存OpenCV中Mat_<Vec3f>格式的图像2014-04-14
    更多文章

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510330.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    行动策略过于复杂怎么办?试试下面一些解决方法

    背景 随着使用SLS告警越来越深入&#xff0c;有些用户的行动策略会配置的特别复杂&#xff0c;有些时候可以让用户通过创建多个行动策略来进行一定的精简&#xff0c;但是在一些场景下&#xff0c;用户是无法创建多个行动策略的。例如用户想要通过SLS来统一管理其各个监控系统…

    从效能公式解构研发效能

    这几年&#xff0c;云原生、Web3.0、元宇宙等技术的出现和应用&#xff0c;正在深刻地改变着我们这个世界。以数字技术应用为主线的数字化转型是此次人类文明变革的核心动力。在这一变革过程中&#xff0c;软件研发模式的发展起到了重至关重要的作用。从早期瀑布式、精益敏捷、…

    sdut 汉诺塔系列2

    汉诺塔系列2 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 用1,2,...,n表示n个盘子&#xff0c;称为1号盘&#xff0c;2号盘,...。号数大盘子就大。经典的汉诺塔问 题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典…

    阿里CCO:基于 Hologres 的亿级明细 BI 探索分析实践

    CCO是Chief Customer Officer的缩写&#xff0c;也是阿里巴巴集团客户体验事业部的简称。随着业务的多元化发展以及行业竞争的深入&#xff0c;用户体验问题越来越受到关注。CCO体验业务运营小二日常会大量投入在体验洞察分析中&#xff0c;旨在通过用户的声音数据结合交易、物…

    ubuntu软件安装 caffe相关软件安装 学习笔记

    解压rar文件sudo 7z x filename.rar解压zip文件unzip archive_name.zip解压TAR文件# tar -cvf archive_name.tar directory_to_compress运行ssdsudo sucd caffepython ///caffe出现no mudole caffe解决方法source /etc/profile编译caffemake cleanmake all -j8获得复制文件权限…

    sdut 青蛙过河

    青蛙过河 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 1&#xff09;一条小溪尺寸不大&#xff0c;青蛙可以从左岸跳到右岸&#xff0c;在左岸有一石柱L&#xff0c;石柱L面积只容得下一只青蛙落脚&#xff0c;同样右岸也有一石柱R&…

    python调用shell脚本

    python程序 import osimport subprocessimport syswhile(1):subprocess.call("/home/your_host_name/caffe/detection_position/test_code/new/call_parse_position.sh", shellTrue) call_parse_position.sh 文件 #!/bin/bash # # #gcc m1.cpp -o m1_run echo &…

    sdut 数字三角形问题

    数字三角形问题 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法&#xff0c;计算出从三角形的顶至底的一条路径&#xff0c;使该路径经过的数字总和最大。对于给定的由n行…

    caffe编译出现 libcudart.so.8.0 cannot open shared object file: No such file or directory的错去

    "libcudart.so.8.0 cannot open shared object file: No such file or directory"解决办法是将一些文件复制到/usr/local/lib文件夹下&#xff1a;#注意自己CUDA的版本号&#xff01;sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.s…

    sdut 装船问题

    装船问题 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 王小二毕业后从事船运规划工作&#xff0c;吉祥号货轮的最大载重量为M吨&#xff0c;有10种货物可以装船。第i种货物有wi吨&#xff0c;总价值是pi。王小二的任务是从10种货物中…

    SSD( Single Shot MultiBox Detector)关键源码解析

    SSD&#xff08;SSD: Single Shot MultiBox Detector&#xff09;是采用单个深度神经网络模型实现目标检测和识别的方法。如图0-1所示&#xff0c;该方法是综合了Faster R-CNN的anchor box和YOLO单个神经网络检测思路&#xff08;YOLOv2也采用了类似的思路&#xff0c;详见YOLO…

    sdut 删数问题

    删数问题 Problem Description 键盘输入一个高精度的正整数n&#xff08;≤100位&#xff09;&#xff0c;去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s&#xff0c;寻找一种方案&#xff0c;使得剩下的数字组成的新数最小。Input …

    爬取百度搜索的图片

    #encoding:utf-8import urllibimport requests #首先导入库import reMaxSearchPage 20 # 收索页数CurrentPage 0 # 当前正在搜索的页数DefaultPath "/home/mindfusion/pic" # 默认储存位置NeedSave 0 # 是否需要储存n0def imageFiler(content): # 通过正则获取当…

    sdut 活动选择问题

    活动选择问题 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description sdut 大学生艺术中心每天都有n个活动申请举办&#xff0c;但是为了举办更多的活动&#xff0c;必须要放弃一些活动&#xff0c;求出每天最多能举办多少活动。Input 输入包括…

    YOLO升级版:YOLOv2和YOLO9000解析

    论文笔记&#xff1a;YOLO9000: Better, Faster, Stronger&#xff1b;官方网站 评论&#xff1a;YOLO是基于深度学习方法的端到端实时目标检测系统&#xff08;YOLO&#xff1a;实时快速目标检测&#xff09;。YOLO的升级版有两种&#xff1a;YOLOv2和YOLO9000。作者采用了一系…

    sdut 马的走法

    马的走法 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 在一个4*5的棋盘上&#xff0c;马的初始位置坐标&#xff08;纵 横&#xff09;位置由键盘输入&#xff0c;求马能返回初始位置的所有不同走法的总数&#xff08;马走过的位置不…

    python 生成xml文件

    from xml.dom.minidom import Document # 确保caffe在Python路径: import xml.dom.minidomdoc Document() #创建DOM文档对象Object doc.createElement(Objects)doc.appendChild(Object) objec_namepersonlable15xmin207ymin106xmax489ymax381score0.99566object_name doc.c…

    sdut 懒虫小鑫

    懒虫小鑫 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 小鑫是个大懒虫&#xff0c;但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心&#xff0c;小鑫还是要做这件事情的。我们把这个事情简…

    c++ 解析xml文件

    解析的xml文件 <?xml version"1.0" encoding"utf-8"?><Objects><person><label>15</label><xmin>207</xmin><ymin>106</ymin><xmax>489</xmax><ymax>381</ymax><scor…

    sdut 最少拦截系统

    最少拦截系统 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.…