基于opencv的图像拼接(四): 基于stitch类的离线图像拼接

获取的拼接的连续图像放在两个文件夹,运用stitch类连续拼接

程序效果:
单看每一张效果都还是不错的,但是连续播放就不行了,每次变换矩阵还是不一样的,所以一般离线图像拼接还是以第一帧图像为基准计算变换矩阵,进行后续帧数的拼接。
但是为什么“单看每一张效果都还是不错的,但是连续播放就不行了”,我也不是很清楚,希望大神懂的可以教教我


附上代码,代码比较简单:

#include <iostream>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/legacy/legacy.hpp>  
#include <opencv2/stitching/stitcher.hpp>  
#include <vector>  
using namespace std;  
using namespace cv;  
  
void stitch(vector<Mat> imgs,Mat& resultMat)  
{    
    bool flag = true;  
    Stitcher stitcher = Stitcher :: createDefault(flag);  
    Stitcher::Status status = stitcher.stitch(imgs, resultMat);  
   
}  
int main()  
{  

    bool stop = false;      
    vector<Mat>imgs;  
    Mat resultMat1; 
    const int count = 150;

   char image_name1[1000];
   char image_name2[1000];
   char image_name3[1000];
   for (int i = 1; i <= count; i++)
   {
   
        sprintf(image_name1, "..\\pica\\7(%d).jpg", i); //放在当前文件夹pica中,图片顺序分别为7(1),7(2).....7(i)
		sprintf(image_name2, "..\\picb\\6(%d).jpg", i);
		Mat img1 = imread(image_name1);
		Mat img2 = imread(image_name2);
		if(img1.empty())
			cout << "empty" << endl;
		//resize(img1, img1, Size(640, 480));
		//resize(img2, img2, Size(640, 480));
		imgs.push_back(img1);  
        imgs.push_back(img2);  
		stitch(imgs, resultMat1);
        sprintf(image_name3, "..\\stitch\\1(%d).jpg", i);
		resize(resultMat1, resultMat1, Size(480, 320));
        imwrite(image_name3,resultMat1);
		imgs.clear();
   }
  
  return 0;  
      
}  
拼接效果:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值