OpenCV4开发入门教程146:图像拼接

索引地址:系列索引

所谓图像拼接,就是将几幅图像中的重复部分合并并生成一幅新的完整的图像。

最常见的应用就是长屏截图和全景拍摄。

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/stitching.hpp>
#include <iostream>
#include <vector>
using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
cv::Mat image1 = imread("1.png");
cv::Mat image2 = imread("2.png");
cv::Mat image3 = imread("3.png");
if (!image1.data || !image2.data || !image3.data)
return -1;
vector<Mat> imgs;
imgs.push_back(image1);
imgs.push_back(image2);
imgs.push_back(image3);

cv::Mat resultMat;
// 定义Stitcher类
cv::Ptr stitcher = Stitcher::create(Stitcher::PANORAMA);
Stitcher::Status status = stitcher->stitch(imgs, resultMat);
if (status != Stitcher::OK) {
std::cout << "error" << std::endl;
}
cv::imshow("resultMat1", resultMat);
cv::waitKey(0);
return 0;
}

原始图片为

1 2 3

拼接效果为

result

可以看到有部分内容被忽略了。


OpenCV4开发入门教程146:图像拼接
https://feater.top/opencv/opencv-stitch-images
作者
JackeyLea
发布于
2020年11月10日
许可协议