OpenCV經常使用圖像拼接方法(四):基於Stitcher類拼接

    OpenCV經常使用圖像拼接方法將分爲四個部分與你們共享,這裏是第四種方法,至此四種經常使用方法介紹完畢。ios

    OpenCV的經常使用圖像拼接方法(四):基於OpenCV Stitcher類的圖像拼接,OpenCV版本爲4.4.0。特色和適用範圍:圖像需有足夠重合相同特徵區域。優勢:適應部分傾斜/尺度變換和畸變情形,拼接效果好,使用簡單,能夠一次拼接多張圖片。缺點:須要有足夠的相同特徵區域進行匹配,速度較慢(和圖像大小有關,能夠使用GPU加速)。spa

    以下是待拼接的兩張圖片:code

 

    源碼與拼接效果圖:blog

 

 

// 04_Image_Stitch_With_StitcherClass.cpp  
// 環境 VS2017 + OpenCV4.4.0
// 功能介紹:基於OpenCV Stitcher類進行圖像拼接
// 特色:圖像需有足夠重合相同特徵區域
// 優勢:適應部分傾斜/尺度變換和畸變情形,拼接效果好,使用簡單
// 缺點:須要有足夠的相同特徵區域進行匹配,速度較慢(和圖像大小有關,能夠使用GPU加速)

#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
  Stitcher::Mode mode = Stitcher::PANORAMA;
  //Stitcher::Mode mode = Stitcher::SCANS;
  vector<Mat> imgs;
  Mat img1 = imread("04.jpg");
  Mat img2 = imread("05.jpg");
  if (img1.empty() || img2.empty())
  {
    cout << "Read image failed, please check again!" << endl;
    return 1;
  }
  imgs.push_back(img1);
  imgs.push_back(img2);

  string result_name = "result.jpg";
  Mat pano;
  Ptr<Stitcher> stitcher = Stitcher::create(mode);
  Stitcher::Status status = stitcher->stitch(imgs, pano);
  if (status != Stitcher::OK)
  {
    cout << "Can't stitch images, error code = " << int(status) << endl;
    return 1;
  }
  imwrite(result_name, pano);
  cout << "stitching completed successfully\n" << result_name << " saved!";
  return 0;
}

    拼接效果:圖片

 

 

相關文章
相關標籤/搜索