C++和Opencv4.5 实现全景图像拼接

前言

最近刚下了最新版的opencv4.5,急不可待的试下操作,就用了opencv自带的Stitcher类拼接下图像,结果傻眼了,程序显示Stitcher没有createDefault成员,看了好久,终于找到了解决方法。

Stitcher原理

Stitcher类程序流程:

  1. 对图像特征点进行检测,默认是 orb(features from accelerated segment test)算法
  2. 对图像的特征点进行匹配
  3. 得到正确的图像序列。
  4. 求旋转矩阵
  5. 拼接

环境

OpenCV:4.5.0
VS:2019 C++
平台:Windows 10

代码演示

#include <iostream>  
#include <stdio.h>  
#include <opencv2/stitching.hpp>
#include < opencv2\opencv.hpp > 
#include <fstream>using namespace cv;
using namespace std;int main()
{vector<Mat> imgs;Mat image1,image2;image1 = imread("C://Users//**//Desktop//1.PNG");image2 = imread("C://Users//**//Desktop//2.PNG");resize(image1, image1, Size(600, 450), 0, 0, INTER_LINEAR);//图片是截取的,所以使用resize做了尺寸修改resize(image2, image2, Size(600, 450), 0, 0, INTER_LINEAR);imshow("原图1", image1); imshow("原图2", image2);imgs.push_back(image1);imgs.push_back(image2);Ptr<Stitcher> stitcher = Stitcher::create();//调用create方法Mat pano;Stitcher::Status status = stitcher->stitch(imgs, pano);	// 使用stitch函数进行拼接if (status != Stitcher::OK){cout << "Can't stitch images, error code = " << int(status) << endl;return -1;}// 显示结果图像imshow("全景图像", pano);waitKey(0); 
}

结果展示

原图
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

借鉴了以下大佬的文章,附上链接

OpenCV3.4.2 实现图像拼接与融合
OpenCV4中Stitch的应用

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

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

相关文章

机器学习——python实现SVM模型w,b的查看

基于源代码&#xff1a;《机器学习——支持向量机SVM之python实现简单实例一》进行讲解 1、线性模型 这里以二特征三类&#xff0c;一对多策略为案例 kernel “linear”&#xff1a;线性核&#xff0c;参数有w&#xff0c;b 线性模型的决策边界是&#xff1a;w0iTx0i w1i…

Codeforces-712C-Memory and De-Evolution

转载于:https://www.cnblogs.com/GrowingJlx/p/6642764.html

移动端输入框弹出键盘控制

在移动端&#xff0c;我们公司通过输入框主要收集用户的姓名和电话&#xff0c;以下是对输入框获取焦点时&#xff0c;控制弹出键盘的样式来增强用户体验。 输入姓名 我们的用户都是中国人&#xff0c;输入用户名为中文&#xff0c;所以弹出键盘是输入中文状态即可&#xff0c;…

Opencv4.5-C++ 摄像头画面镜像显示及文件保存

前言 想试下新买电脑的摄像头好用不&#xff0c;就写了个摄像头调用程序&#xff0c;实现了镜像和图片截取保存。 代码 #include <iostream> #include <opencv2/stitching.hpp> #include <opencv2\opencv.hpp> #include <opencv2/highgui/highgui.h…

机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)

目录 一、ROC曲线 二、TP、FP、TN、FN 三、 python绘制ROC曲线(二分类) 1、思路 2、关键代码

easyui datagrid 列拖动

实现代码-code <script type"text/javascript"> $.extend($.fn.datagrid.methods, { columnMoving: function(jq) { return jq.each(function() { var target this; var cells $(this).datagrid(getPanel).find(div.datagrid-header td[field]); cells.dragg…

window linux IPC ftok BY_HANDLE_FILE_INFORMATION

看这题目就很乱&#xff0c;心情当然也是不怎么美好了。前一段时间做了一个项目&#xff0c;AIX(Unix的一种&#xff09;中的一个系统向WINDOWS移植&#xff0c;开发环境由IBM的C/C(叫什么忘记了&#xff0c;好像是xlC)变为VC。 这是算过来&#xff0c;但是最近进程通信的信号量…

相机标定(一) —— 深入理解齐次坐标及其作用

一、什么是齐次坐标和齐次坐标系 齐次坐标 齐次坐标是一个相机标定问题的关键理论之一&#xff0c;所以就此问题分析一下。 单从定义上来讲&#xff0c;齐次坐标&#xff08;投影坐标&#xff09;就是用N1维来代表N维坐标&#xff08;点和向量&#xff09;&#xff0c;也可说…

机器学习——图解SVM中gamma和c参数的作用

参数c和gamma的作用 我们通过下图详解参数c的作用&#xff0c;首先我们以一个简单的线性分类器为例&#xff0c;上一个博客中我们知道影响分类器的主要因素是支持向量&#xff0c;即虚线上的样本&#xff0c;如下图可知&#xff1a; 但当正负样本的分布在如下情况时&#xff0…

关于结构体里面结构体的申明和使用

申请&#xff1a; typedef struct Vo{int Voltage;float Delay_ms;char Enable;}Volt_Def;typedef struct ed{float Delay_ms;int Level;}Edge_Def;typedef struct Ed_hard{Edge_Def a;Edge_Def b;Edge_Def c;}HARD_RESET;int power_sel 0xff;typedef struct power_x{Volt_Def…

面试题(十四)

唐巧前辈说这些都是 iOS 的基础问题&#xff0c;应该对此深入的了解。当初看到时&#xff0c;大部分回答不上来&#xff0c;因为平时没有好好思考整理过。这里大部分的概念大多会在学习 OC 的过程中遇到过&#xff0c;但还是得经过写代码才能有更深的理解。反正我当初看那些设计…

工业相机基础知识详述 —— 焦平面,像平面,弥散圆,光圈,分辨率,景深,接口,靶面尺寸

一、焦平面 想到焦平面&#xff0c;很多人不由自主就想到不就是焦点所在的垂直于光轴的平面吗&#xff1f;其实其背后隐藏这更多的东西。 1&#xff09;焦点不止一个 对于一般拍摄场景来说&#xff0c;光通过一个凸透镜&#xff0c;汇聚不到一个点&#xff0c;越靠近中轴线的…

机器学习——SVM之交叉验证对参数(C,gamma)进行优化以及选择

目录 一、(C,gamma)简介 二、交叉验证 1、什么是交叉验证? 2、参数优化方法

【BZOJ-2427】软件安装 Tarjan + 树形01背包

2427: [HAOI2010]软件安装 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 960 Solved: 380[Submit][Status][Discuss]Description 现在我们的手头有N个软件&#xff0c;对于一个软件i&#xff0c;它要占用Wi的磁盘空间&#xff0c;它的价值为Vi。我们希望从中选择一些软件…

Hadoop目录

1. 通过java读取HDFS的数据 (转&#xff09; 2. FLume监控文件夹&#xff0c;将数据发送给Kafka以及HDFS的配置文件详解 3. 开启hadoop和Hbase集群的lzo压缩功能&#xff08;转&#xff09; 4. Hadoop集群WordCount运行详解&#xff08;转&#xff09;转载于:https://www.cnblo…

相机标定(二)深入理解四大坐标系与其变换关系

一、前言 视觉系统一共有四个坐标系&#xff1a;像素平面坐标系&#xff08;u,v&#xff09;、图像坐标系&#xff08;x,y&#xff09;、相机坐标系&#xff08;Xc,Yc,Zc&#xff09;和世界坐标系&#xff08;Xw,Yw,Zw&#xff09;&#xff0c;如下图所示。每种坐标系之间均存…

numpy——ravel()和flatten()

目录 功能 用法 区别 flatten&#xff08;&#xff09; ravel() 功能 这两个函数的功能都是将多维数组转换成一维 用法 import numpy as np arr np.array([[1, 2],[3, 4]]) arr.flatten()降维默认行序优先&#xff0c;传入参数‘F’表示列序优先 arr.flatten(F) arr.r…

Django的model中日期字段设置默认值的问题

之前写过这样一个model&#xff1a; class MonthlyFeeMember(models.Model):worker models.ForeignKey(Student, verbose_nameu"worker", related_name"as_monthly_fee_members")month models.CharField(umonth, max_length10, defaultget_current_month…

相机标定(三) —— 畸变校正

一、前言 根据针孔模型&#xff0c;物体和成像之间参数会满足相似三角形的关系。但现实中会存在装配误差和透视失真等原因&#xff0c;导致这种关系无法成立&#xff0c;使理想成像与实际成像存在误差&#xff0c;这种误差即称为畸变。 畸变分为径向畸变&#xff0c;切向畸变和…

SVG技术入门:线条动画实现原理

相信大家都见到过这样神奇的技术&#xff1a;一副线条构成的画能自动画出自己。非常的酷。Jake Archibald是这种SVG技术的首创者&#xff0c;并且写了一篇非常好的文章来描述它是如何实现的。Brian Suda也在24 Ways网站上讨论过它。 Polygon使用它在一篇设计方面的文章里创造出…