Atitit opencv 模板匹配

Atitit opencv 模板匹配

1.1. 图片1

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

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

1.4. Code2

1.1. 图片

Atitit opencv 模板匹配Atitit opencv 模板匹配

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 ]

Atitit opencv 模板匹配

// 使用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

上一篇:LeetCode 滑动窗口题型整理


下一篇:From cls答辩