opencv-c++模板匹配后截图

化相关系数匹配法:method=TM_CCOEFF_NORMED##

这是在一个海港图上截出来的一部分,然后要从这部分识别出日期
这是在一个海港图上截出来的一部分,然后要从这部分识别出日期

#include <opencv2/opencv.hpp>   
#include<vector>
using namespace std;
using namespace cv;

//切割方框下方五个部分的区域 
void processEnglishBottomImage(cv::Mat amask)
{
	int width = amask.size().width;

	Mat bottomImg;
	cvtColor(amask, bottomImg, CV_BGR2GRAY);

	//把括号里的值转化为int型
	int newcols = static_cast<int>(bottomImg.cols * 0.25);
	Mat newbottomImg = bottomImg(Range(0, bottomImg.rows), Range(0, newcols));

	Mat NoticeTem = imread("template1.png", 0);//使用的模版
	Mat ResultNot, ResultPub;
	//匹配notice
	cv::matchTemplate(newbottomImg, NoticeTem, ResultNot, CV_TM_CCOEFF_NORMED);

	cv::normalize(ResultNot, ResultNot, 0, 1, NORM_MINMAX, -1, Mat());

	double minValN, maxValN, minValP, maxValP;
	cv::Point minLocN, maxLocN, minLocP, maxLocP;
	//minMaxLoc的作用:在数组中找到全局最小值和最大值,第二三参数表示最小、大值的指针
	//第四五参数表示最小、大位置的指针
	cv::minMaxLoc(ResultNot, &minValN, &maxValN, &minLocN, &maxLocN, Mat());

	
	/*	cv::matchTemplate(newbottomImg, PublishedTem, ResultPub, CV_TM_CCOEFF_NORMED);
	cv::normalize(ResultPub, ResultPub, 0, 1, NORM_MINMAX, -1, Mat());
	cv::minMaxLoc(ResultPub, &minValP, &maxValP, &minLocP, &maxLocP, Mat());
	*/
	//截出Edition Data
	Mat bottom1 = amask(Range(maxLocN.y+30 , maxLocN.y + NoticeTem.rows+34), Range(maxLocN.x+200, maxLocN.x+500));
//	Mat bottom1 = amask(Range(maxLocN.y, maxLocN.y + NoticeTem.rows), Range(maxLocN.x , maxLocN.x + NoticeTem.cols));

	imwrite("011.jpg", bottom1);
}

int main(int argc, char* argv[])
{
	Mat mask = imread("11.jpg");
	processEnglishBottomImage(mask);

	waitKey(0);
	system("pause");
	return 0;
}

这是截出来的日期
这是截出来的日期

这是所用的模板
这是所用的模板

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值