【OpenCV3】Stitcher图像拼接

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

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


0.png


1.png


2.png


3.png


4.png

处理代码如下:

#include < stdio.h >  
#include < opencv2\opencv.hpp >  
#include < opencv2\stitching.hpp >


int main()
{
	std::vector< cv::Mat > vImg;
	cv::Mat rImg;

	vImg.push_back(cv::imread("images0/0.png"));
	vImg.push_back(cv::imread("images0/1.png"));
	vImg.push_back(cv::imread("images0/2.png"));
	vImg.push_back(cv::imread("images0/3.png"));
	vImg.push_back(cv::imread("images0/4.png"));

	cv::Stitcher stitcher = cv::Stitcher::createDefault();

	unsigned long AAtime = 0, BBtime = 0; //check processing time
	AAtime = cv::getTickCount(); //check processing time

	cv::Stitcher::Status status = stitcher.stitch(vImg, rImg);

	BBtime = cv::getTickCount(); //check processing time 
	printf("Time consuming: %.2lf sec \n", (BBtime - AAtime) / cv::getTickFrequency()); //check processing time

	if (cv::Stitcher::OK == status)
		cv::imshow("Stitching Result", rImg);
	else
		printf("Stitching fail.");

	cv::waitKey(0);
}

结果如下:


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



2018.05.22



猜你喜欢

转载自blog.csdn.net/guduruyu/article/details/80405880