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. 【HTML5 Canvas】计算元件/显示对象经过Matrix变换后在上级/舞台上的bounds(边界矩形rect)

    如上图所示,这样的一个简单矩形,边界矩形是(x:-28, y:-35, width:152, height:128),这是在这个元件/显示对象自己的坐标空间的范围. 那么把这个放到父元件(舞台)中,再 ...

  2. 【Linux】eclipse juno 边框过大的调整方法

    切换至eclipse目录: vi plugins/org.eclipse.platform_4.2.*/css/e4_default_gtk.css 找到.MPartStack,替换成如下代码: .M ...

  3. ubuntu普通账户获取root权限的方法以及su和su -的区别

    打开命令窗口 输入命令:sudo passwd root 然后按照上图中的操作进行即可. su和su -的命令的不同: su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shel ...

  4. Eclipse和MyEclipse使用技巧--MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

  5. 【已解决】mysql连接出错:ERROR 1040 (HY000): Too many connections

    连接mysql,结果出错: ? 1 ERROR 1040 (HY000): Too many connections 去修改mysql的配置文件,然后添加: ? 1 2 3 4 5 6 7 8 9 1 ...

  6. js触摸事件

    touch事件的绑定 电脑端的mouseDown,mouseUp,mouseMove分别对应移动端的touchstart,touchend,touchmove 下面的代码判断浏览器是电脑端还是移动端, ...

  7. Python面向对象几个知识点

    一.判断对象是否属于类.判断类是否派生自某个类 class Zero: pass class One(Zero): pass class Two(One, Zero): pass # 判断对象是否完全 ...

  8. 整理打印PI值

    准备锻炼背诵PI的小数,找到PI值: PI=3. 141592653589793238462643383279502884197169399375105820974944592307816406286 ...

  9. Asynchronous and non-Blocking I/O 翻译[收藏好文]

    http://www.tornadoweb.org/en/stable/guide/async.html Real-time web features require a long-lived mos ...

  10. 关于PKCS的文档资料

    关于PKCS的文档资料,在这里查找: http://www.emc.com/emc-plus/rsa-labs/standards-initiatives/public-key-cryptograph ...