- 假设两个摄像头平行固定,所拍摄的图像视差很小,可以通过“柱面投影+模板匹配+渐入渐出融合”的解决方案实现视频拼接。
- 这种视频拼接的方法仅仅是使用模板匹配的方法,划定一个需要匹配的区域,然后水平和垂直方向查找相同的区域,然后对两张图片进行融合。
- 本文相机拼接的程序只是使用前3帧图像进行拼接,后面通过前三帧的匹配地方进行机械的拼接。
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
//以下3个函数,与系列文章:图像拼接(一)...中的函数,相同
//柱面投影
//首先使用前3帧计算平移变量,然后使用固定的平移变量进行拼接
Mat cylinder(Mat imgIn, int f);
//计算两幅图像之间的平移量
Point2i getOffset(Mat img, Mat img1);
//线性融合
Mat linearFusion(Mat img, Mat img1, Point2i a);
int main()
{
//VideoCapture cap1(0);
VideoCapture cap2(1);
//VideoCapture cap2;
//if (!cap2.open("rtsp://admin:haikang123456@192.168.1.103/h264/ch1/main/av_stream"))
//{
// std::cout << "Error opening video stream or file" << std::endl;
// return -1;
//}
VideoCapture cap2("./video/left_1.mp4");
VideoCapture cap1("./video/right_2.mp4");
double rate = 60;
int delay = 1000 / rate;
bool stop(false);
Mat frame1;
Mat frame2;
Mat frame;
Point2i a;//存储偏移量
int k &#