Atitit opencv 模板匹配

1.1. 图片1

1.2. Atitit opencv 模板匹配  6中匹配算法貌似效果区别不大1

1.3. 对模板缩放的影响 一般的缩放可以,太大了就歇菜了。。2

1.4. Code2

1.1. 图片

1.2. Atitit opencv 模板匹配  6中匹配算法貌似效果区别不大

//创建于原图相同的大小,储存匹配度

Mat result = Mat.zeros(source.rows(),source.cols(),CvType.CV_32FC1);

//调用模板匹配方法

Imgproc.matchTemplate(source, dst, result,Imgproc.TM_SQDIFF);

Mat [ 1088*585*CV_32FC1, isCont=true, isSubmat=false, nativeObj=0x5a00fca0, dataAddr=0x5a260050 ]

规格化以后

Mat [ 1088*585*CV_32FC1, isCont=true, isSubmat=false, nativeObj=0x5a00fca0, dataAddr=0x5a260050 ]

// 使用minMaxLoc找出最佳匹配

// 对于CV_TM_SQDIFF和 CV_TM_SQDIFF_NORMED这两种方法,最小值为最佳匹配;对于别的方法最大值为最佳匹配

if( matchMethod  == CV_TM_SQDIFF || matchMethod == CV_TM_SQDIFF_NORMED )

{ matchLoc = minLoc; }

else

{ matchLoc = maxLoc; }

1.3. 对模板缩放的影响 一般的缩放可以,太大了就歇菜了。。

1.4. Code

public class TemplateMaching {

private String sourcePath,dstPath;

private Mat source,dst;

//原图片

public void setSource(String picPath){

this.sourcePath = picPath;

}

//需要匹配的部分

public void setDst(String picPath){

this.dstPath = picPath;

}

//处理,生成结果图

public void process(String outpic,int matchMode){

//将文件读入为OpenCV的Mat格式

source = Highgui.imread(sourcePath);

dst = Highgui.imread(dstPath);

//创建于原图相同的大小,储存匹配度

Mat result = Mat.zeros(source.rows(),source.cols(),CvType.CV_32FC1);

//调用模板匹配方法

Imgproc.matchTemplate(source, dst, result,matchMode);  //TM_CCOEFF_NORMED

//规格化  rst=    Mat [ 1005*1236*CV_32FC1, isCont=true, isSubmat=false, nativeObj=0x57b3fca0, dataAddr=0x59e80050 ]

Core.normalize(result, result, 0, 1,Core.NORM_MINMAX, -1);

//获得最可能点,MinMaxLocResult是其数据格式,包括了最大、最小点的位置x、y

System.out.println( AtiJson.toJson(result));

MinMaxLocResult mlr = Core.minMaxLoc(result);

Point matchLoc;

if (matchMode == Imgproc.TM_SQDIFF || matchMode == Imgproc.TM_SQDIFF_NORMED) {

matchLoc = mlr.minLoc;

else {

matchLoc = mlr.maxLoc;

}

//在原图上的对应模板可能位置画一个绿色矩形

Core.rectangle(source, matchLoc, new Point(matchLoc.x + dst.width(),matchLoc.y + dst.height()),new Scalar(0,255,0));

//将结果输出到对应位置

Highgui.imwrite(outpic,source);

}

public static void main(String[] args) {

//System.loadLibrary("opencv_java249");  F:\opencv_build_x64_vc12 bin\bin

System.load( "C:\\progrm\\opencv\\build\\java\\x64\\opencv_java2413.dll" );

TemplateMaching macher = new TemplateMaching();

//设置原图

String bigimg = "C:\\0img\\a.jpg";

macher.setSource(bigimg);

//设置要匹配的图

//String tmp_pic ="C:\\0img\\t3_saovei_mini.jpg";

String tmp_pic ="C:\\0img\\t2.jpg";  //ver mini

macher.setDst(tmp_pic);

String outpic ="C:\\0img\\tmpl_out.jpg";

macher.process(filex.addSuffix(outpic, "_TM_SQDIFF"),Imgproc.TM_SQDIFF);

macher.process(filex.addSuffix(outpic, "_TM_SQDIFF_NORMED"),Imgproc.TM_SQDIFF_NORMED);

macher.process(filex.addSuffix(outpic, "_TM_CCORR"),Imgproc.TM_CCORR);

macher.process(filex.addSuffix(outpic, "_TM_CCORR_NORMED"),Imgproc.TM_CCORR_NORMED);

macher.process(filex.addSuffix(outpic, "_TM_CCOEFF"),Imgproc.TM_CCOEFF);

macher.process(filex.addSuffix(outpic, "_TM_CCOEFF_NORMED"),Imgproc.TM_CCOEFF_NORMED);

System.out.println("--f");

}

}

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

,Uke部落首席大酋长,

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

uke 首席cto  奶牛科技首席cto , 软件部门总监 技术部副总监  研发部门总监主管  产品部副经理 项目部副经理

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人。

uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,

uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

Uke软件标准化协会理事长理事长 uke终身教育学校副校长

Uke 数据库与存储标准化协会副会长 uke出版社编辑总编

Uke医院 与医学院方面的创始人

Uke 户外运动协会理事长  uke交友协会会长

转载请注明来源:attilax的专栏  ?http://www.cnblogs.com/attilax/

--Atiend

Atitit opencv 模板匹配的更多相关文章

  1. Atitit opencv模板匹配attilax总结

    Atitit opencv模板匹配attilax总结 找一幅图像的匹配的模板,可以在一段视频里寻找出我们感兴趣的东西,比如条形码的识别就可能需要这样类似的一个工作提取出条形码区域(当然这样的方法并不鲁 ...

  2. opencv 模板匹配与滑动窗口(单匹配) (多匹配)

    1单匹配: 测试图片:   code: #include <opencv\cv.h> #include <opencv\highgui.h> #include <open ...

  3. OpenCV模板匹配函数matchTemplate详解

    参考文档:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matchin ...

  4. OpenCV——模板匹配

    minMaxLoc函数: void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, ...

  5. opencv::模板匹配(Template Match)

    模板匹配介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域. 所以模板匹配首先需要一个模板图像T(给定的子图像) 另外需要一个待检测的图像-源图像S 工作方法,在带检测图像上,从左到右,从 ...

  6. 关于opencv模板匹配功能的项目测试记录

    模板匹配功能介绍的很好的一篇博客:https://www.cnblogs.com/XJT2018/p/9934139.html 就如上述博客所言:“若原图像中的匹配目标发生旋转或大小变化,该算法无效. ...

  7. opencv模板匹配查找图像(python)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- import cv2 import numpy as np from cv2 import COLOR_B ...

  8. opencv 模板匹配, 已解决模板过大程序不工作的bug

    #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv ...

  9. opencv模板匹配有趣的链接

    https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matchi ...

随机推荐

  1. FTP在CentOS上安装与使用

    安装: yum install -y vsftpd 相关配置文件: /etc/vsftpd/vsftpd.conf //主配置文件,核心配置文件 /etc/vsftpd/ftpusers //黑名单, ...

  2. cocos2d-js 写日志log 查看日志log Android调试查看log

    1 输出日志的方式,当然是cc.log了 2 如何查看日志?        a)如果小程序可以先在浏览器上跑,例如用chrome,在控制台就可以看到输出的log:        b)如果在真机上调试, ...

  3. Java泛型的PECS原则

    1.什么是PESC ? PESC  = producer-extens , consumer -super. 如果参数化类型表示一个 T 生产者,就使用 <? extends T>: 如果 ...

  4. 〖Android〗Nexus 7 flo (razor) 刷入Recovery/CM-11.0后卡在开机动画的解决方法

    操作日志: 起因:Nexus 7 flo 华硕平板,刷了一个CWM Recovery之后变成了砖机: 尝试1:使用CWM Recovery清除数据,开机失败 尝试2:刷入CM 11 Snapshot的 ...

  5. 将ASP.NET用户控件转化为自定义控件

    将ASP.NET用户控件转化为自定义控件 作者:Kevin Cheng (程建和) 最后修改时间:2006-03-14 概述:如何将ASP.NET用户控件移植为ASP.NET自定义控件 关键字:Asp ...

  6. Kinect2.0骨骼跟踪与数据平滑

    Kinect v1和Kinect v2传感器的配置比较:   Kinect v1 Kinect v2           颜色(Color) 分辨率(Resolution) 640×480 1920× ...

  7. 转 linux下php扩展mysqli的支持

    前两天一个站点转移过来,因为给我的数据库有问题,我也没有仔细处理这个站点.今天把数据库弄好了,发现还是用不了,报的错误如下:Fatal error: Class ‘mysqli’ not found ...

  8. Delphi 7调用C语言编写的DLL

    DLL一定是要C语言导出的符号,也就是extern “C”. 当然,我们都知道DLL调用分为动态调用和静态调用. 动态调用的一般思想为,先LoadLibrary那个你想加载的DLL,然后通过GetPr ...

  9. android适配不同分辨率的手机

    android中不同手机分辨率适配问题 在项目开发的过程中,同一个布局对应不同的手机会显示出不同的效果.导致这个现象产生的原因是不同手机的分辨率不同.在android sdk提供的帮助文档中,我们可以 ...

  10. QQ登录整合/oauth2.0认证-02-跳转到QQ互联页

    ---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...