zoukankan      html  css  js  c++  java
  • OpenCV 常用图像拼接方法(四):基于Stitcher类拼接

        OpenCV常用图像拼接方法将分为四个部分与大家共享,这里是第四种方法,至此四种常用方法介绍完毕。

        OpenCV的常用图像拼接方法(四):基于OpenCV Stitcher类的图像拼接,OpenCV版本为4.4.0。特点和适用范围:图像需有足够重合相同特征区域。优点:适应部分倾斜/尺度变换和畸变情形,拼接效果好,使用简单,可以一次拼接多张图片。缺点:需要有足够的相同特征区域进行匹配,速度较慢(和图像大小有关,可以使用GPU加速)。

        如下是待拼接的两张图片:

     

    源码与拼接效果图:

     1 // 04_Image_Stitch_With_StitcherClass.cpp  
     2 // 环境 VS2017 + OpenCV4.4.0
     3 // 功能介绍:基于OpenCV Stitcher类进行图像拼接
     4 // 特点:图像需有足够重合相同特征区域
     5 // 优点:适应部分倾斜/尺度变换和畸变情形,拼接效果好,使用简单
     6 // 缺点:需要有足够的相同特征区域进行匹配,速度较慢(和图像大小有关,可以使用GPU加速)
     7  
     8 #include "pch.h"
     9 #include <iostream>
    10 #include <opencv2/opencv.hpp>
    11  
    12 using namespace std;
    13 using namespace cv;
    14  
    15 int main()
    16 {
    17   Stitcher::Mode mode = Stitcher::PANORAMA;
    18   //Stitcher::Mode mode = Stitcher::SCANS;
    19   vector<Mat> imgs;
    20   Mat img1 = imread("04.jpg");
    21   Mat img2 = imread("05.jpg");
    22   if (img1.empty() || img2.empty())
    23   {
    24     cout << "Read image failed, please check again!" << endl;
    25     return 1;
    26   }
    27   imgs.push_back(img1);
    28   imgs.push_back(img2);
    29  
    30   string result_name = "result.jpg";
    31   Mat pano;
    32   Ptr<Stitcher> stitcher = Stitcher::create(mode);
    33   Stitcher::Status status = stitcher->stitch(imgs, pano);
    34   if (status != Stitcher::OK)
    35   {
    36     cout << "Can't stitch images, error code = " << int(status) << endl;
    37     return 1;
    38   }
    39   imwrite(result_name, pano);
    40   cout << "stitching completed successfully
    " << result_name << " saved!";
    41   return 0;
    42 }

    拼接效果:

  • 相关阅读:
    C connect实现Timeout效果(Linux)
    QSS网址
    C实现读写文件
    crond守护进程实现定时监控某进程占有内存的大小
    Ubuntu17安装Chrome有效
    Ubuntu16安装wine(转)
    直方图均衡化
    函数后面的const修饰符的作用
    C 线程学习记录
    Override Fuction 调用——到底使用的是谁的函数
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14182699.html
Copyright © 2011-2022 走看看