拿到驾照了

来源:互联网 发布:基于算法的漏洞排查 编辑:程序博客网 时间:2024/04/28 07:51

        历时三个月左右的驾照拿到了,之所以要写篇博文,是因为约车时使用了约车软件,我自己开发的,所以也归入技术类文章。

        报名及科目一考试不必细说,最终在2月28号办理好上车手续,可以网上约车了。

        当时约车外挂不多,没引起学校重视,所以我的外挂一直很“灵”。后来学校封杀过一次,不过没影响到我的约车方法,因为我是直接调约车接口的,而且是提前8天约的车(正常约车只能提前7天哦),而学校封杀的是频繁登录刷新的方法。

        不过那些人也有点过份,自己约车就罢了,还公然在当当网、淘宝网上叫卖,更有人开发个app上传到苹果商店。

        后来学校就不停的更新系统,最终影响到我了。因为有次发现可约车的一会儿有一会儿没有,我就趁有车的时候抢了一台,中午发现剩余学时多了四个小时,才知道刚约到的车被学校取消了。不过分析一下也是,因为那些车可能是学校办理快速班的车,结果发现手续没办完丢了一台,岂不奇怪。学校还算人慈了,只是取消我约的车,没封我号。后来再也不敢提前8天约了,只能像网上一像,提前7天约。

        也会帮人约车,尽管不收费,但帮人约到车也是一件快事。当然,对不用软件的学员就不公平了,但有什么办法,总不能逼着他们总约车贩子吧。之前约车一直用的是系统提供的HTTP类,也就是说我的软件是单用户的,约车时只能一个学员一个学员的约,但那么多人抢车,第二个学员还没登录上呢,车就没了。所以必须改进,改成多用户的,也就是学员登录上后要保存Cookie,每个学员进行自己的操作时,再取保存的对应的Cookie取出来发给服务器。

        学校后来还改过登录时的验证码,从简单的识别,改成汉字,可能怕学员不认识有些字,又改成复杂的字母验证码。可能学校发现问题还没解决吧,后来改成约车时也得有验证码了,所以我只好在约车开放之前登录上,取到可约车的列表,再取到相应的验证码,事先填好,到了约车点直接就能约车了。没两天,学校又升级了,这次是到点才让登录,而且各种车型分时间段登录。没辙了,大家填验证码的速度是差不多的,所以能约到一辆车就不错了,更不要说约多辆车。之前一分钟之内车肯定会被约车,现在发现约完所有的车至少得三四分钟。

        这验证码加的真有效。



        不得不研究验证码识别,也就是OCR。读研时写过个基于感知器的识别,尽管那是手写数字识别,但对识别度没有什么要求,自己写着玩。

        这次不一样了,对识别率及准确度都有了要求,我不得不想办法研究怎么识别这些验证码。研究过程不必说了,但最终,约车时的验证码搞定了,识别率100%,准确度要差点,但约车本身足够了。

        尽管帮人约车我没得到什么实惠,但就软件开发而言,还真学到了不少。

        1、软件架构。麻雀虽小,五脏俱全。学校在修改服务器,我也不得不一次次的修改我的软件。网络层只是加网络接口,界面层只是加页面,数据层只是数据接口,所以软件架构的好的话,不必大改。

        2、软件升级方案。由于我的iPad一直是最新系统,但XCode目前还是4.2,不能直接刷到设备上,不得不考虑软件版本的问题。多用户软件,iPhone界面太小,不得不改成iPad版的。已经录入了不少学员的信息,不能删除应用,因为删除应用,所有的数据都没了。所以得考虑软件升级,数据库升级的问题。

        3、收获最大的就是验证码识别了,能力在这方面又提高一个水平。

        

        我的验证码识别的步骤:

        1、去噪。去掉验证码图片上的噪声。

        2、切割。验证码图片上有四个字母,不过是均匀分布的,平均切割就行,只是字母分布在图片的什么位置就不固定了。

        3、找到有效点。即找到字母的位置及尺寸,找到有效的像素点。

        4、计算特征值。这步最难,因为得想好用什么样的方法计算特征值。一共试过四种,

        (1)田字四等份,计算各份中像素点数与总的有效像素点的比例。否决,因为特征值重复度太高,即一个特征值可以表示多个字母。而且偶尔才有个识别正确的,更不要说一张验证码图片上的四个字母都识别正确了。

        (2)四个面及横纵直方图各取三点,计算这三点间的大小关系。否决,重复度也不低,准确度只是高了一点点。

        (3)四个面及横纵直方图判断突出的地方的分布。不理想,十来次才能出现一次四个字母都识别正确的。

        (4)计算四个面曲线的走势。这次好了,特征值没有重复的,只是知识库大了点,不过准确度还不错,够用了。



原创粉丝点击