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…

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

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

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

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

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

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

面试题(十四)

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

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

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

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

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

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

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

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

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

机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)

目录 一、理论知识回顾 1、神经网络模型 2、明确任务以及参数 1&#xff09;待估参数&#xff1a; 2&#xff09;超参数&#xff1a; 3&#xff09;任务 3、神经网络数学模型定义 1&#xff09;激活函数 ​ 2&#xff09;各层权重、阈值定义 3&#xff09;各层输入输…

Halcon例程(基于多个标定图的单目相机标定)详解—— Camera_calibration_multi_image.hdev

一、前言 在我的工业相机专栏里已经将相机标定涉及到的理论部分讲解完毕&#xff0c;为什么要标定以及标定要求出什么参数呢&#xff0c;用一个Halcon 例程来帮助理解。 这个例程是比较经典的标定程序&#xff0c;基本将标定过程讲的比较清楚&#xff0c;用的标定图像是系统自…

SkipList 跳表

为什么选择跳表 目前经常使用的平衡数据结构有&#xff1a;B树&#xff0c;红黑树&#xff0c;AVL树&#xff0c;Splay Tree, Treep等。 想象一下&#xff0c;给你一张草稿纸&#xff0c;一只笔&#xff0c;一个编辑器&#xff0c;你能立即实现一颗红黑树&#xff0c;或者AVL树…

机器学习——深度学习之卷积神经网络(CNN)——LeNet卷积神经网络结构

目录 一、卷积神经网络 1、卷积神经的作用 2、LeNet 1&#xff09;数据库准备——minst 2&#xff09;模型 二、关于卷积神经网络结构的一些术语定义 1、特征图&#xff08;Feature map&#xff09; 2、height&#xff08;长度&#xff09;、width&#xff08;宽度&…

工业相机(3D)主要参数详述

一、前言 准确的完成相机选型是一个视觉工程师必备的技能&#xff0c;而选型前必须对其内部参数了如指掌。工业相机是一种比较复杂的产品&#xff0c;其参数很多&#xff0c;每个参数可能会有不同的标准&#xff0c;下面对主要的参数会做比较详细的阐述。 二、参数详述 2.1 …

JAVA8永久代

在Java虚拟机&#xff08;以下简称JVM&#xff09;中&#xff0c;类包含其对应的元数据&#xff0c;比如类的层级信息&#xff0c;方法数据和方法信息&#xff08;如字节码&#xff0c;栈和变量大小&#xff09;&#xff0c;运行时常量池&#xff0c;已确定的符号引用和虚方法表…

Struts 2初体验

Struts2简介&#xff1a; Struts2是一个基于MVC设计模式的Web应用框架&#xff0c;它本质上相当于一个servlet&#xff0c;在MVC设计模式中&#xff0c;Struts2作为控制器(Controller)来建立模型与视图的数据交互。 Struts 2 目录结构:     apps目录&#xff1a;Struts2示例…

机器学习——深度学习之数据库和自编码器

目录 一、数据库——数据获取 1、Mnist 2、ImageNet 二、自编码器&#xff08;Auto-encoder&#xff09;——参数初始化 1、功能 2、基本思想 1&#xff09;训练第一层 2&#xff09;训练第二层及以后的神经网络 ​ 3&#xff09;利用BP对整个神经网络的参数初始值进…

Halcon例程详解 (深度图转换为3D图像)—— xyz_attrib_to_object_model_3d

一、前言 深度图向点云图进行转换是进行3D检测项目时会遇到的问题&#xff0c;halcon里也有针对此问题的相关例程&#xff0c;下面对此例程进行分析。通过学习此例程&#xff0c;我们可以掌握如何将一张深度图像和一张正常二维图像转换为3D点云。 二、分析 * 初始化界面 dev…

动态代理之Cglib浅析

什么是Cglib Cglib是一个强大的&#xff0c;高性能&#xff0c;高质量的代码生成类库。它可以在运行期扩展JAVA类与实现JAVA接口。其底层实现是通过ASM字节码处理框架来转换字节码并生成新的类。大部分功能实际上是ASM所提供的&#xff0c;Cglib只是封装了ASM&#xff0c;简化了…

机器学习——深度学习之卷积神经网络(CNN)——AlexNet卷积神经网络结构

目录 一、AlexNet卷积神经网络结构模型 1、数据库ImageNet 2、AlexNet第一层卷积层 二、AlexNet卷积神经网络的改进 1、非线性变化函数的改变——ReLU 2、最大池化&#xff08;Max Pooling&#xff09;概念的提出——卷积神经网络通用 1&#xff09;池化层 2&#xff0…