OpenCV Stitcher图像拼接

OpenCV3中提供了一个用于图像拼接的模块——Stitcher,可以将连续拍摄的图像序列,拼接成一幅全景画面。

如下所示是56幅连续拍摄的图像:

OpenCV Stitcher图像拼接

0.png

OpenCV Stitcher图像拼接

1.png

OpenCV Stitcher图像拼接

2.png

OpenCV Stitcher图像拼接

3.png

OpenCV Stitcher图像拼接

4.png

处理代码如下:



 1 #include < stdio.h >  
 2 #include < opencv2\opencv.hpp >  
 3 #include < opencv2\stitching.hpp >
 4  
 5  
 6 int main()
 7 {
 8     std::vector< cv::Mat > vImg;
 9     cv::Mat rImg;
10  
11     vImg.push_back(cv::imread("images0/0.png"));
12     vImg.push_back(cv::imread("images0/1.png"));
13     vImg.push_back(cv::imread("images0/2.png"));
14     vImg.push_back(cv::imread("images0/3.png"));
15     vImg.push_back(cv::imread("images0/4.png"));
16  
17     cv::Stitcher stitcher = cv::Stitcher::createDefault();
18  
19     unsigned long AAtime = 0, BBtime = 0; //check processing time
20     AAtime = cv::getTickCount(); //check processing time
21  
22     cv::Stitcher::Status status = stitcher.stitch(vImg, rImg);
23  
24     BBtime = cv::getTickCount(); //check processing time 
25     printf("Time consuming: %.2lf sec \n", (BBtime - AAtime) / cv::getTickFrequency()); //check processing time
26  
27     if (cv::Stitcher::OK == status)
28         cv::imshow("Stitching Result", rImg);
29     else
30         printf("Stitching fail.");
31  
32     cv::waitKey(0);
33 }

结果如下:

OpenCV Stitcher图像拼接

经裁剪,即可得到一幅全新的全景画面:

OpenCV Stitcher图像拼接

上一篇:2、Opencv加载、显示、保存图像


下一篇:OpenCV相关API