展开
湖北国联计算机科技有限公司
  • 首页HOME
  • 公司简介INTRODUCTION
  • 安全防御DEFENSE
  • 软件开发SOFTWARE
  • 物联网IOT
  • 运行维护SRE
  • 成功案例CASE
  • 联系我们CONTACT
  • Software Technology Sharing |技术分享

    由“跳一跳”小程序聊一聊C#与冲顶大会
    来源:荆州软件开发 荆州网站建设 时间:2018-01-18

    一、由跳一跳开始

    2018年初,跳一跳小程序着实火了一把。一时间,各种攻略,甚至辅助工具也应运而生。作为.net阵营的一员,这篇跳一跳辅助程序文章,可以说是让人眼前一亮。实现思路大体如下:

    1.下载adb工具;

    2.打开手机usb调试模式;

    3.通过命令行调用adb工具,向手机发送命令

       3.1发送截图命令

       3.2将截图从手机复制到磁盘

       3.3将手机截图绘制到winform窗体的PixtureBox

       3.4鼠标左键单击小人底部,右键单击目标点

       3.5将小人底部的点,目标点之间的距离转换为屏幕按压时间

       3.6发送屏幕按压命令

    4.手动完成一次跳跃


    二、偶遇冲顶大会

    有意无意得总是遇见冲顶大会几个字,通过搜索后,发现是一款在线限时答题类app。每道题三个选项,10s内作答,共12道题目,去不答对以后与其他全答对的人均分奖金。奖金从50000-300000不等。

    答题辅助思路:

    1.截取手机屏幕图片

    2.识别截图中的题目

    3.调用浏览器,搜索题目

    不过,此思路是基于ios手机操作系统,采用 iOS + Mac+WDA+免费ocr识别来实现的。


    三、跳一跳与冲顶大会

    本着生命在于折腾的原则,想着在android手机操作系统+windows操作系统上也能实现一个答题辅助工具。借(剽)鉴(窃)上面的实现思路,说下,具体的实现过程。

    1.发送获取屏幕截图命令 ”adb shell screencap -p /sdcard/xxx.png”

    2.发送将手机截图复制到本地磁盘的命令  ”pull /sdcard/xxx.png"

    3.获取题目所在区域

       3.1 自己的手机屏幕分辨率为1080*1920,手机截图长度为16.5cm,题目开始出现的位置距离图片顶部为3cm,题目宽度大概为2cm(题目为2行文字),这一步,跳一跳辅助工具已经实现了。

       3.2 调用算法,从手机截图中截取题目所在区域大小的图片 Bitmap map = GetPart(file, 0, 0, 1080, (int)(1920 * (5.5 - 3) / 16.5), 0, (int)(1920 * 3 / 16.5));

       3.3 使用开源ocr识别库Tesseract,识别上一步截图map中的题目GetOcrText

       3.4 去除题目中的换行,处理特殊字符。

       3.5调用浏览器,搜索题目


    四、问题

    1.问题1:题目所在区域的获取,题目有时为一行,有时为两行,图片大小不太固定

    2.问题2:从获取发送截图命令,将截图复制到本地磁盘,截取题目所在区域大小图片,识别图片中题目内容,调用浏览器搜索,呈现搜索结果共耗时6s左右,答题时间仅有10s,有点不太够用


    五、总结

    虽然,到头来结果不是太理想,但这个举一反三的探索过程却是有收获的。从一开始ocr识别不支持中文,到Tesseract库项目编译失败,再到搜索Tesseract支持的中文识别依赖文件chi_sim.traineddata,是解决问题能力的锻炼,也是涨姿势的过程。总的来说还不错。欢迎交流。

    荆州地区政府网站建设 解决方案 专业团队 腾讯第三方平台 地址:湖北省荆州市沙市区荆沙大道楚天都市佳园一期C区29栋112       地址:湖北省松滋市才知文化广场1141-1142号     邮编:434200 联系电话:0716-6666211     网站编辑部邮箱:business@gl-ns.com 鄂公网安备 42100202000212号 备案号:鄂ICP备2021015094号-1     企业名称:湖北国菱计算机科技有限公司