1.如何用OpenCV训练自己的分类器
首先,需要说明的是,OpenCV自带的haar training提取的特征是haar特征 分类器是AdaBoost级联分类器(如需了解Adaboost算法, 。
所谓的级联分类器,就是将若干的简单的分量分类器(可以理解为一般的普通分类器)依次串联起来,最终的检测分类结果,要依次通过所有的分量分类器才能算是一个有效的检测分类结果。否则,就认为当前检测区域内没有我们需要找的目标。
利用OpenCV自带的haar training程序训练一个分类器,需要经过以下几个步骤:(1)收集训练样本: 训练样本包括正样本和负样本。正样本,通俗点说,就是图片中只有你需要的目标。
而负样本的图片只要其中不含有目标就可以了。但需要说明的是,负样本也并非随便选取的。
例如,你需要检测的目标是汽车,那么正样本就应该是仅仅含有汽车的图片,而负样本显然不能是一些包含天空的,海洋的,风景的图片。因为你最终训练分类器的目的是检测汽车,而汽车应该出现在马路上。
也就是说,分类器最终检测的图片应该是那些包含马路,交通标志,建筑物,广告牌,汽车,摩托车,三轮车,行人,自行车等在内的图片。很明显,这里的负样本应该是包含摩托车、三轮车、自行车、行人、路面、灌木丛、花草、交通标志、广告牌等。
另外,需要提醒的是,adaboost方法也是机器学习中的一个经典算法,而机器学习算法的前提条件是,测试样本和训练样本独立同分布。所谓的独立同分布,可以简单理解为:训练样本要和最终的应用场合非常接近或者一致。
否则,基于机器学习的算法并不能保证算法的有效性。此外,足够的训练样本(至少得几千张正样本、几千张负样本)也是保证训练算法有效性的一个前提条件。
这里,假设所有的正样本都放在f:/pos文件夹下,所有的负样本都放在f:/neg文件夹下;(2)对所有的正样本进行尺寸归一化:上一步收集到的正样本,有很多的尺寸大小,有的是200*300,有的是500*800。尺寸归一化的目的,就是把所有的图片都缩放到同一大小。
比如,都缩放到50*60的大小。(3)生成正样本描述文件: 所谓的正样本描述文件,其实就是一个文本文件,只不过,很多人喜欢将这个文件的后缀改成.dat而已。
正样本描述文件中的内容包括:文件名 目标个数 目标在图片中的位置(x,y,width,height)典型的正样本描述文件如下所示:0.jpg 1 0 0 30 401.jpg 1 0 0 30 402.jpg 1 0 0 30 40。.. 不难发现,正样本描述文件中,每一个正样本占一行,每一行以正样本图片开头,后面紧跟着该图片中正样本的数量(通常为1),以及正样本在图片中的位置 假如,f:\pos文件夹下有5000个正样本图片,每个图片中仅有一个目标。
那么,我们可以写程序(遍历文件夹中的所有图片文件,将文件名写入到文件中,将正样本在图片中的位置,大小都写入文件中)生成一个pos.dat文件作为正样本描述文件。(4)创建正样本vec文件 由于haarTraining训练的时候需要输入的正样本是vec文件,所以需要使用createsamples程序来将正样本转换为vec文件。
打开OpenCV安装目录下bin文件夹里面的名为createSamples(新版本的OpenCV里面改名为opencv_createSamples)的可执行程序。需要提醒的是,该程序应该通过命令行启动(可以参考我的另一篇博客:/carson2005/article/details/6704589 )。
并设置正样本所在的路径以及生成的正样本文件保存路劲(例如:f:\pos\pos.vec)。Createsamples程序的命令行参数:命令行参数:-vec 训练好的正样本的输出文件名。
-img源目标图片(例如:一个公司图标)-bg背景描述文件。-num要产生的正样本的数量,和正样本图片数目相同。
-bgcolor背景色(假定当前图片为灰度图)。背景色制定了透明色。
对于压缩图片,颜色方差量由bgthresh参数来指定。则在bgcolor-bgthresh和bgcolor+bgthresh中间的像素被认为是透明的。
-bgthresh-inv如果指定,颜色会反色-randinv如果指定,颜色会任意反色-maxidev背景色最大的偏离度。-maxangel-maxangle,-maxzangle最大旋转角度,以弧度为单位。
-show如果指定,每个样本会被显示出来,按下"esc"会关闭这一开关,即不显示样本图片,而创建过程继续。这是个有用的debug选项。
-w输出样本的宽度(以像素为单位)-h《sample_height》输出样本的高度,以像素为单位。(5) 创建负样本描述文件在保存负样本的文件夹下生成一个负样本描述文件,具体步骤同(3),此处不再赘叙; (6)进行样本训练 该步骤通过调用OpenCV\bin目录下的haartraining程序(新版本的opencv改名为opencv_haartraining)来完成。
其中,Haartraining的命令行参数为:-data存放训练好的分类器的路径名。-vec正样本文件名(由trainingssamples程序或者由其他的方法创建的)-bg背景描述文件。
-npos,-nneg用来训练每一个分类器阶段的正/负样本。合理的值是:nPos = 7000;nNeg = 3000-nstages训练的级联分类器层数。
-nsplits决定用于阶段分类器的弱分类器。如果1,则一个简单的stump classifier被使用。
如果是2或者更多,则带有number_of_splits个内部节点的CART分类器被使用。-mem预先计算的以MB为单位的可用内存。
2.暗黑破坏神2秘籍
我下了一个作弊器效果…… 暗黑破坏神II:毁灭之王Diablo II: LOD 1.10 正式版单机测试用辅助工具 补充合成公式一览 by 2years 2003.10.29 新增的 cube 合成公式说明: 1、任意物品加一个鉴定卷轴 = 该物品的 unique 形态,如: 任意一把 colossus blade + 一个鉴定卷轴 = unique grandfather 2、任意物品加一个回城卷轴 = 该物品的 set 形态,如: 任意一个 amulet + 一个回城卷轴 = set tal rasha amulet (当然也可能出现其他的 set amulet) 3、任意一个单独的 weapon、armor、ring、amulet、jewel 直接合成可以得到一个随机属性的该物品的 Rare 版本。
任意一个单独的 charm 直接合成可以得到一个随机属性的 magic charm。 4、任意物品加一瓶生命恢复药水 = 保留原全部属性的该物品的升级形态,升级次序为 normal -> exceptional -> elite ->再返回 exceptional ,如: 任意一把 Ancient Sword + 一瓶生命恢复药水 = 一把相同属性的 Mythical Sword 或者 unique lance (spire of honor) + 一瓶生命恢复药水 = unique war pike 版本的 spire of honor 5、任意物品加一瓶魔法恢复药水 = 保留原全部属性的该物品的 ethereal 形态,如: 任意一把普通的 war pike + 一瓶魔法恢复药水 = ethereal war pike 或者 unique titan + 一瓶魔法恢复药水 = ethereal titan 6、任意没打孔的 weapon 或者 armor + 一瓶解毒药水 = 在这个物品上打一个孔 任意没打孔的 weapon 或者 armor + 两瓶解毒药水 = 在这个物品上打两个孔 任意没打孔的 weapon 或者 armor + 三瓶解毒药水 = 在这个物品上打三个孔 任意已打孔的 weapon 或者 armor + 一瓶解毒药水 = 在这个物品上打四个孔 任意已打孔的 weapon 或者 armor + 两瓶解毒药水 = 在这个物品上打五个孔 任意已打孔的 weapon 或者 armor + 三瓶解毒药水 = 在这个物品上打六个孔 也就是说,如果要给没打孔的一件物品打六个孔,需要经过两次合成,第一次,这个物品加 1 - 3 瓶解毒药水先任意打上 1 - 3 个孔,第二次用打完孔的该物品加三瓶解毒药水就能 打上六个孔 magic 物品最多只能打 2 个孔,unique、set、rare 都只能打一个 7、任意物品 + 一瓶解毒药水 + 一个回城卷轴 = 该物品的 normal 形态, 如: 一件 magic archon plate + 一瓶解毒药水 + 一个回城卷轴 = 一件白色的普通 archon plate 8、任意一个 ring + 任意一个 amulet = 一个售价为 2500000 的 ear (可以换钱) 9、一个回城卷轴 + 一个鉴定卷轴 = wirt's leg (开启奶牛关所需物品) 10、任意一个 small charm + 一瓶体力药水 = 带 +461% 经验值属性的 small charm (辅助快速升级,可以合成多个) 11、任意一件武器 + 一瓶体力药水 = 带 cruel 属性 (200%ed - 300%ed) 的 rare 版本的该类型武器 12、任意一个 jewel + 一瓶体力药水 = 带 ruby 前缀 (30%ed - 40%ed) 的随机 magic jewel 13、任意一个 grand charm + 第三级别以上的宝石 = 加一人物技能的 grand charm 例如:一个 grand charm + amethyst = +1 asn traps skill grand charm 一个 grand charm + flawless amethyst = +1 asn shadow disciplines skill grand charm 一个 grand charm + perfect amethyst = +1 asn martial arts skill grand charm 每种宝石对应一个人物角色类型,用不同种的第三级别以上的宝石就能合成不同人物角色的技能 gc: amethyst 对应 asn 的技能 topaz 对应 ama 的技能 sapphire 对应 barb 的技能 emerald 对应 nec 的技能 diamond 对应 pal 的技能 ruby 对应 sorc 的技能 skull 对应 dru 的技能 14、任意一个 small charm + perfect ruby = 带火焰伤害属性的 small charm 任意一个 small charm + perfect topaz = 带闪电伤害属性的 small charm 任意一个 small charm + perfect emerald = 带毒素伤害属性的 small charm 任意一个 small charm + perfect sapphire= 带冰冻伤害属性的 small charm 任意一个 small charm + perfect diamond = 带增加四防属性的 small charm 任意一个 small charm + perfect amethyst= 带增加最大伤害属性的 small charm 任意一个 small charm + perfect skull = 带快跑属性的 small charm 15、任意一个物品 + 一瓶生命恢复药水 + 一瓶魔法恢复药水 = 复制该物品(最多为三份) --》使用举例: 利用上面这些公式,你可以很容易制造出需要的大部分 unique、set 物品以及制作 runeword 等等。
举个例子,你想要 windforce ,可以这么做: 首先到商店,应该很容易买到或赌博到 hydra bow 的 normal 或者 excepitional 版本(Long War Bow 和 Gothic Bow) 然后用公式4把这个 bow 升级到 elite 版本的 hydra bow 再用公式1合成就出来了。 再举个做 runeword 的例子,例如需要做一把基于 ethereal war pike 的 "silence" runeword: 首先到商店购买或通过赌博得到任意一把 pike, 如果是蓝色的可以先用公式7把它先变成一把普通的 normal pike, 接着用两次公式4把这个 normal pike 升级到 normal war pike, 再用公式5制作出 ethereal war pike, 用公式6给这个 ethereal war pike 打6个孔, 最后到商店买来所需的 rune 镶上即可。
结果搞的我最后再也不想玩暗黑了`太变态了没意思 劝戒大家还是脚踏实地的好`游戏的难度越大你通关后的成就感就越大~这是我多年来。
转载请注明出处51数据库 » opencword300