#include <iostream>
#include <fstream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/stitching/stitcher.hpp"
using namespace std;
using namespace cv;
bool try_use_gpu = false;
vector<Mat> imgs;
string result_name = "result.jpg";
int main(int argc, char* argv[])
{
// 读取图像
Mat img1 = imread("1.jpg");
Mat img2 = imread("2.jpg");
Mat img3 = imread("3.jpg");
if (img1.empty() || img2.empty() || img2.empty())
{
cout << "Can't read image"<< endl;
return -1;
}
imgs.push_back(img1);
imgs.push_back(img2);
imgs.push_back(img3);
// 调用createDefault函数生成默认的参数
Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
// 使用stitch函数进行拼接
Mat pano;
Stitcher::Status status = stitcher.stitch(imgs, pano);
// 保存结果图像
imwrite(result_name, pano);
// 显示源图像,和结果图像
namedWindow("源图像1", CV_WINDOW_NORMAL);
namedWindow("源图像2", CV_WINDOW_NORMAL);
namedWindow("源图像3", CV_WINDOW_NORMAL);
namedWindow("全景图像", CV_WINDOW_NORMAL);
imshow("源图像1", img1);
imshow("源图像2", img2);
imshow("源图像3", img3);
imshow("全景图像", pano);
waitKey(0);
return 0;
}