流程关键代码如下:Mat
ImageMerger::getMerageImageBasedOnTemplate1(const Mat &image1, const Mat &image2)
{
//转灰度图像
Mat image1_gray, image2_gray;
cvtColor(image1, image1_gray, CV_BGR2GRAY);
cvtColor(image2, image2_gray, CV_BGR2GRAY);
//1-50行选做模板
Mat temp = image2_gray(Range(1, 50), Range::all());
//结果矩阵图像,大小,数据类型
Mat res(image1_gray.rows - temp.rows + 1, image2_gray.cols - temp.cols + 1, CV_32FC1);
//模板匹配,采用归一化相关系数匹配
matchTemplate(image1_gray, temp, res, CV_TM_CCOEFF_NORMED);
//结果矩阵阈值化处理
threshold(res, res, 0.8, 1, CV_THRESH_TOZERO);
double minVal, maxVal, thresholdv = 0.8;
Point minLoc, maxLoc;
minMaxLoc(res, &minVal, &maxVal, &minLoc, &maxLoc);
//图像拼接
Mat temp1, result;
if (maxVal >= thresholdv)//只有度量值大于阈值才认为是匹配
{
//result:拼接后的图像
result = Mat::zeros(cvSize(image1.cols, maxLoc.y + image2.rows), image1.type());
//temp1:原图1的非模板部分
temp1 = image1(Rect(0, 0, image1.cols, maxLoc.y));
//将图1的非模板部分和图2拷贝到result
temp1.copyTo(Mat(result, Rect(0, 0, image1.cols, maxLoc.y)));
image2.copyTo(Mat(result, Rect(0, maxLoc.y - 1, image2.cols, image2.rows)));
}
//将合并后的图像保存
imwrite("merge.jpg", result);
return result;
当前截长图功能已经能满足大多数场景,同时还存在以下不足:
1、拼接处不能有影响算法识别的区域,例如大片的空白区域,或重复相同区域;
2、框选区域中不能有动态变化的视频或是动画;
- 打水井的风水禁忌 水风井求财
- 怎么让胸变大 怎么让胸变大变挺
- 电脑怎么设置家用路由器配置 手机路由器设置的基本步骤
- 快速简单免费去水印方法 如何修复去除图片上的水印或痕迹
- 风水分析 天庭风水分析
- 甲基安非他明
- 电脑键盘各个按键的具体分类 电脑键盘功能大全知识
- 免费高清压缩图片的方法 ppt压缩大小如何不减画质
- 数学家的手抄报怎么画 数学手抄报图片内容
- 颈部淋巴肉芽肿是什么病 淋巴肉芽肿图片
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
