欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现冲顶大会辅助工具 (截图+图像识别+搜索)

程序员文章站 2022-07-09 21:00:57
前两天在博客园看到 .NET开发一个微信跳一跳辅助程序, 原来可以通过C#连接手机操作。正好朋友圈有人分享“冲顶大会”。冲顶大会是一个在线答题APP。每次12道题,每道题有10秒钟的答题时间,全对者瓜分1万或10万奖金。于是试着答了一次,大部分题目都不算难,即便不知道但通过关键词搜索应该也很容易找到 ......

前两天在博客园看到 .NET开发一个微信跳一跳辅助程序, 原来可以通过C#连接手机操作。正好朋友圈有人分享“冲顶大会”。冲顶大会是一个在线答题APP。每次12道题,每道题有10秒钟的答题时间,全对者瓜分1万或10万奖金。于是试着答了一次,大部分题目都不算难,即便不知道但通过关键词搜索应该也很容易找到答案的。但限制是只有10秒钟答题时间,基本来不及输入问题。于是试着写了一个答题的辅助工具,基本思路是通过adb手机截图,然后用百度图像识别开发包识别问题,再自动搜索。

截图

参考中国.NET研究协会在.NET开发一个微信跳一跳辅助程序的代码。adb截图命令如下:

adb shell /system/bin/screencap -p /sdcard/screenshot.png(保存到SDCard) adb pull /sdcard/screenshot.png d:/screenshot.png(保存到电脑)


附adb驱动下载地址:

http://adbdriver.com/downloads/

adb shell下载地址:

http://adbshell.com/downloads

图像识别

注册百度AI开发平台。

在NuGet中搜索 Baidu.AI并安装.代码很简单:

// 设置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";

var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);

public void GeneralBasicDemo() {
    var image = File.ReadAllBytes("图片文件路径");
    // 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用try/catch捕获
    var result = client.GeneralBasic(image);
    Console.WriteLine(result);
    // 如果有可选参数
    var options = new Dictionary<string, object>{
        {"language_type", "CHN_ENG"},
        {"detect_direction", "true"},
        {"detect_language", "true"},
        {"probability", "true"}
    };
    // 带参数调用通用文字识别, 图片参数为本地图片
    result = client.GeneralBasic(image, options);
    Console.WriteLine(result);
}

参考http://ai.baidu.com/docs#/OCR-Csharp-SDK/top

搜索

里面的题目更多都中国“内事”,所以选择用百度搜索。但百度搜索好像没哟接口提供,所以使用直接打开网页http://www.baidu.com/s?wd=关键字&cl=3的方式。

 

最好附上效果图

C#实现冲顶大会辅助工具 (截图+图像识别+搜索)

和代码:https://gitee.com/roytec/BaiduOCRDemo

注:本文仅限学习adb,Baidu OCR和交流之用。目前还有许多局限性,比如从截图到识别再到搜索大概需要4,5秒的时间,还需要快速在网页上辨别答案,剩下供选择的时间几乎很少。另外有些答案直接搜索是没法搜到的,比如“下面那些景点不在北京?”

如有同学想下载APP试玩的请加邀请码580805,你和我都会多一次复活机会。