Atitit opencv 模板匹配

Atitit opencv 模板匹配

 

1.1. 图片 1

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

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

1.4. Code 2

 

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_SQDIFFCV_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://blog.csdn.net/attilax

--Atiend

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值