#include "quanjing.h"
#include <QApplication>
#include <QMessageBox>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
quanjing::quanjing(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(btnClick()));
}
void quanjing::btnClick(){
Mat imgL = imread("C:/Users/TR/Desktop/quan/2.jpg");
Mat imgR = imread("C:/Users/TR/Desktop/quan/3.jpg");
double start = getTickCount();
Mat grayL, grayR;
cvtColor(imgL, grayL, COLOR_BGR2GRAY);
cvtColor(imgR, grayR, COLOR_BGR2GRAY);
Mat grayL64F, grayR64F;
grayL.convertTo(grayL64F, CV_64F);
grayR.convertTo(grayR64F, CV_64F);
Point shiftPt = phaseCorrelate(grayL64F, grayR64F);
Mat dstImg(imgL.rows, imgR.cols + abs(shiftPt.x), CV_8UC3, Scalar::all(0));
Mat roiLeft = dstImg(Rect(0, 0, imgL.cols, imgL.rows));
imgL.copyTo(roiLeft);
Mat roiRight = dstImg(Rect(-shiftPt.x, 0, imgR.cols, imgR.rows - shiftPt.y));
Mat cutImg = imgR(Rect(0, shiftPt.y, imgR.cols, imgR.rows - shiftPt.y));
cutImg.copyTo(roiRight);
Mat debugImg = dstImg.clone();
rectangle(debugImg, Point(-shiftPt.x, -shiftPt.y), Point(dstImg.cols-1, imgR.rows - shiftPt.y), Scalar(0, 255, 0), 2, 8);
imwrite("match.jpg", debugImg);
double end = getTickCount();
double useTime = (end - start) / getTickFrequency();
cout << "use-time : " << useTime << "s" << endl;
imwrite("C:/Users/TR/Desktop/quan/dst.jpg", dstImg);
QMessageBox::information(this,"xxxx","kkkk");
}
quanjing::~quanjing()
{
}

融合后结果:

FR:徐海涛(hunkxu)