1、旋转倾斜ide
旋转倾斜的目的就是要提升识别的正确率,若是字符‘A’的模板是标准的,让一个横着的‘A’去训练确定得不到正确的结果。不过怎么旋转呢?想要将每一个字符都旋转到印刷体的角度那是很难的,也是没必要要的,在这里采用的思想就是每次都旋转成为“最瘦的”。每次分割出来一个字符不论是横着的仍是竖着的,均可以回到“最瘦”的角度。具体作法就是利用OpenCV的旋转函数.函数
鉴于大部分验证码的旋转都不是特别夸张,因此处理时我让字符从旋转的范围定在顺时针-15度到15度,每次旋转一度,而后计算最左边第一个黑色像素到最右边第一个黑色像素的距离,取距离最小的角度最终让字符旋转那个角度。测试
能够看到分割出来的字符和原始的仍是有点不太同样,因为测试用的验证码倾斜的并不明显,因此这里调整的也不是很明显。网站
2、归一化spa
因为验证码大小不一,图片上又大量背景像素,所以在进行最后一步识别的时候,还应该将验证码的大小缩放到固定的大小。在这里我是先获得字符像素的最小外包矩形,这样能够先把没有用的白色背景像素干扰取消掉。接下来就是将全部的字符都统一缩放到16*16的大小,这样最终获得的通过预处理的标准字符就能够开始训练识别了。.net