赞
踩
这篇文章依旧是记录采用C++复现图像拼接过程解决遇到的问题。因为自己没有学过C++,大学学的C考完试立马还给老师了,Python也是现学的,只会一点点MATLAB,所以遇到的问题和解决都很基础,目的是自己做一些记录,并分享给与我相同的图像入门小白,若有错误还希望大佬们指正。
拼接的主要参考文献:
OpenCV常用图像拼接方法(二):基于模板匹配拼接_Color Space的博客-CSDN博客_图像拼接素材
图像拼接的程序的目的是将imgL(1)与imgR(2)拼接起来,方法是通过截取imgL中的一小部分特征区域与imgR的图像进行比对,找到最相似的区域坐标,以此作为拼接的联系坐标,将两幅图拼接起来(大白话就是将两图最相似的区域对齐叠起来达到拼接效果。)
- Mat imgL = imread("A.jpg");
- Mat imgR = imread("B.jpg");
- double start = getTickCount();
- Mat grayL, grayR;
- cvtColor(imgL, grayL, COLOR_BGR2GRAY);
- cvtColor(imgR, grayR, COLOR_BGR2GRAY);
-
- Rect rectCut = Rect(372, 122, 128, 360);
- Rect rectMatched = Rect(0, 0, imgR.cols / 2, imgR.rows);
- Mat imgTemp = grayL(Rect(rectCut));
- Mat imgMatched = grayR(Rect(rectMatched));
-
- int width = imgMatched.cols - imgTemp.cols + 1;
- int height = imgMatched.rows - imgTemp.rows + 1;
- Mat matchResult(height, width, CV_32FC1);
- matchTemplate(imgMatched, imgTemp, matchResult, TM_CCORR_NORMED);
- normalize(matchResult, matchResult, 0, 1, NORM_MINMAX, -1); //归一化到0--1范围
-
- double minValue, maxValue;
- Point minLoc, maxLoc;
- minMaxLoc(matchResult, &minValue, &maxValue, &minLoc, &maxLoc);
-
- Mat dstImg(imgL.rows, imgR.cols + rectCut.x - maxLoc.x, CV_8UC3, Scalar::all(0));
- Mat roiLeft = dstImg(Rect(0, 0, imgL.cols, imgL.rows));
- imgL.copyTo(roiLeft);
-
- Mat debugImg =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。