当前位置: 首页 > news >正文

10分钟跑通 VinXiangQi:基于 YOLOv5 的象棋智能连线工具实战指南

10分钟跑通 VinXiangQi:基于 YOLOv5 的象棋智能连线工具实战指南

【免费下载链接】VinXiangQiXiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi

VinXiangQi 是一款基于 YOLOv5 的中国象棋智能连线工具:它持续识别屏幕上某个象棋对局软件里的棋盘,把识别结果交给 UCI/UCCI 象棋引擎分析,再把引擎建议的走法自动点回游戏里。换句话说,它解决的是"看着屏幕上的棋局,让 AI 替我思考并落子"这件事,识别与点击全程自动,不用手动输入棋谱。

先说清楚:它适合谁,不适合谁

适合在电脑上下网棋(天天象棋、JJ 象棋等)、想给对局接一个 AI 分析或自动续盘的棋友;也适合想研究"视觉识别 + 引擎驱动"这套流程的开发者。

它不是独立的象棋对弈软件,自己不能开局对局,必须依附于一个已在屏幕上运行的象棋客户端。另外项目当前仍在完善中(README 作者也明确在招募参与者),部分功能以"能跑通"为标准,遇到边界情况需要自己调。

动手前准备:环境清单一次列全

依赖很少,主要是 Windows 侧的开发环境:

  • Windows 系统+.NET Framework 4.8(工程文件 目标框架为 v4.8)
  • Visual Studio 2019 或 2022(任意社区版即可,勾选 .NET 桌面开发负载)
  • 一个 UCI/UCCI 象棋引擎的可执行文件,如 Stockfish 的象棋版、Vain 等,后面接引擎时用
  • 一个你打算连线的象棋客户端(对局软件)已经装好

NuGet 包仓库里已经内置(packages/目录,含 OnnxRuntime、SQLite 等),一般不需要手动还原;若编译提示缺包,在 Visual Studio 里对解决方案执行一次"还原 NuGet 包"即可。

第一次跑起来:从零到首局识别的最短路径

第一步,克隆仓库:

git clone https://gitcode.com/gh_mirrors/vi/VinXiangQi

第二步,用 Visual Studio 打开VinXiangQi.sln,按 F5 编译运行。首次启动后按下面顺序操作:

  1. 选方案。主界面里选择要连线的目标方案,内置的有"天天象棋"和"JJ象棋_棋力评测"两个(方案文件是程序根目录Solutions文件夹里的 TXT,写明截图/点击用哪个窗口的标题或类名)。连别的软件就点"寻找窗口句柄":点完按钮 2 秒内把鼠标移到目标窗口上即可捕获。
  2. 调缩放比。进入调试状态后,看左上角的截图预览:截图显示不全就调大缩放比,出现黑边就调小,直到窗口刚好覆盖整张棋盘图。
  3. 选截图与鼠标模式。默认是后台截图 + 后台鼠标,大多数软件可用;若调试画面是黑的,改勾"前台截图"(见后面排错一节)。
  4. 开始连线。打开游戏对局,按当前轮到谁选择"我方开始"或"对方开始",识别就会启动;卡住了就点"重新检测棋盘"刷新一次。

跑通后的状态就是上面那张主界面截图的样子:左边是识别画面和识别结果,右边是引擎与识别的各项设置。识别结果面板里的棋子是可以点击的,点一下会把点击转发到被连线的游戏里,方便你调试点击落点是否准确。

它是怎么"看懂"棋盘的

原理可以压缩成一句话:截图 → YOLOv5 模型检测 → 还原成 9×10 的棋盘数组 → 喂给引擎

每次检测,软件先按方案截一张棋盘区域图,交给 YOLOv5 的 ONNX 模型(默认nano.onnx,输入尺寸 640×640,见 模型定义),模型输出每颗棋子的类别和坐标,软件据此拼出当前局面。核心逻辑集中在 识别模块 里,源码里维护了"稳定棋盘"和"待确认棋盘"两份状态,用来过滤动画过程中的中间帧,避免走子动画被误判成局面变化。

接上引擎:UCI 引擎怎么配、参数给多少

在引擎管理里添加引擎,填入引擎 exe 的完整路径即可。软件通过 UCI/UCCI 协议与引擎通信,会读取引擎自带的全部选项(引擎通信源码),你可以在设置面板里逐项改。

影响体验最大的几个参数(默认值来自 ProgramSettings):

  • 引擎步进时间(思考时间):默认 2.0 秒。电脑慢就调到 1.5 秒,追求深度就加到 3~4 秒
  • 检测间隔:默认 550ms。这是识别轮询的频率,调小反应更快但更吃 CPU
  • 线程数:默认 4,按你的物理核心数调整
  • 停止分数:默认 2000,局面已明显领先/落后时提前停算,省资源

调完不用反复猜测效果:引擎的思考输出面板会实时打印info行,深度和评估分都在里面,你能直接看到引擎"想了多少、觉得谁优"。

三个真实用法:开局库、棋力对练、自动续盘

开局库对练。在开局库设置里选择是否启用云库或本地开局库(界面见下图)。之后每到一个开局阶段,软件会先查库给出库里推荐着法,而不是每次都让引擎从零算起。适合复盘经典开局、看引擎和库的推荐差在哪。

让引擎替一方下棋(人机/双引擎对练)。选"我方开始"或"对方开始"决定引擎控制哪一方。引擎算出最佳步后,自动点击模块会把这一步点回游戏窗口。你可以一边看引擎思考输出,一边观察识别面板上的棋子位置是否和实际局面一致,不一致通常就是缩放比没调好。

自动续盘。有些平台对局结束后需要点"再来一局"之类的按钮。自动点击管理支持你框选这类按钮:在管理界面右侧的画面上点两次(先左上角后右下角)框出按钮区域,点保存;然后在连线设置里勾选自动点击。之后识别到按钮出现在画面上,软件就会自动点下去。

框按钮时尽量把范围收小、只包住按钮核心部分,不要框整个按钮块——匹配范围越小,检测越快越准。

想让它更顺眼:按设备档位给参数

原则很简单:识别频率(检测间隔)决定"跟手"程度,思考时间决定"聪明"程度,两者都吃 CPU,按机器分档

设备档位思考时间检测间隔线程数典型用途
老机器 / 集显1.5 秒800ms2挂机式自动续盘
主流独显机2.5 秒500ms4日常对弈辅助
高性能多核4.0 秒300ms按物理核数认真看深度分析

另外记住:识别模型默认是nano.onnx(速度优先)。软件也支持把别的.onnx模型文件放进目录里切换,精度和速度的取舍自己按机器定。

出问题先查这几处

现象:调试截图是黑屏。可能原因:目标软件渲染方式不被后台截图支持(浏览器、部分客户端常见)。 处理:勾选"前台截图"。代价是窗口不能被遮挡。

现象:识别出来了,但自动点击没点上。可能原因:后台鼠标依赖向窗口发系统消息,不是所有软件都响应。 处理:改勾"前台鼠标",这是通用模式;缺点是连线点击期间会占用你的鼠标,期间别动它。

现象:识别结果出现,软件却停止分析。可能原因:持续识别模式下偶发的状态卡死(作者在 README 里也提到了这个概率性问题)。 处理:点"重新检测棋盘"手动刷新;若频繁出现,把检测间隔调大一点。

现象:引擎一直报加载失败或超时。可能原因:引擎路径写错,或引擎不是 UCI/UCCI 协议的程序。 处理:在引擎管理里重新选一遍 exe;确认引擎单独运行时能正常响应uci指令。

现象:识别的棋子位置和真实棋盘错位。可能原因:缩放比没对齐,截图区域和真实棋盘有偏移。 处理:重新进入调试状态微调缩放比,以"窗口刚好覆盖棋盘、无黑边"为准。

再往深处走一点

到这一步已经能稳定用了,剩下的是"玩得更细"的三件事:

  • 自定义 YOLOv5 模型。你的客户端棋子样式比较特殊、识别总掉链子时,可以按 YoloXiangQiModel 里定义的类别和尺寸训练自己的模型,导出onnx替换即可。
  • 方案通用化。保存方案时(方案保存),如果截图标题里带了具体对局信息或网址,删掉标题只留窗口类名,方案换个对局还能复用。
  • 开局库策略。软件支持"最高分"和"随机"两种取法,对练时切随机模式,开局套路会更多样。

代码去哪找

想了解哪段逻辑,直接看对应文件(均在VinXiangQi/目录下):

  • 主流程与交互:Mainform.cs
  • 棋盘识别核心:DetectionLogic.cs
  • 引擎通信(UCI/UCCI):EngineHelper.cs
  • 截图与窗口句柄:ScreenshotHelper.cs、ScreenshotForm.cs
  • 模板匹配点击:ImageHelper.cs、MouseHelper.cs
  • 开局库与棋库:OpenBookHelper.cs、ChessDBHelper.cs
  • 规则与局面合法性:XiangQiGame.cs

先接上一个游戏试试

参数不用一次调到位:先用默认配置把一个你常下的客户端连上,确认"识别对、引擎会想、点击能落下"三件事都成立,剩下的档位调整自然会知道往哪调。遇到问题可以进项目 README 里留的交流群(755655813)反馈,作者也在那里。

【免费下载链接】VinXiangQiXiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4233379.html

相关文章:

  • 【单片机课程设计/毕业设计】多模式调控智能热水供给单片机控制系统设计与开发 基于单片机与移动终端的智能饮水监测控制系统设计(024804)
  • 多流形结构分析:用Python实现谱聚类与LTSA联合降维
  • C#调用Onnx Runtime加载DBNet实现条形码检测实战指南
  • iOS提审全流程指南:证书签名、TestFlight与自动化发布
  • 不训模型也能换脸?免费 AI 换脸工具 roop-unleashed 五步出片教程
  • 编译器分层诊断法:破解LLM推理Triton内核性能瓶颈
  • 蓝桥杯STM32 ADC实战:HAL库连续采样、DMA传输与抗干扰调优
  • 三步把 STL 转成可编辑 STEP:stltostp 从安装到批量转换指南
  • 神奇弹幕 MagicalDanmaku 实操指南:B站直播场控、弹幕过滤、自动答谢怎么配
  • 3分钟免费NCM转MP3:ncmdump拖拽教程
  • 数学建模竞赛必备:插值算法原理、选型与实战避坑指南
  • 大模型应用工程化实战:从RAG知识库到AI Agent设计
  • 深入解析C++模板:从两阶段编译到实战避坑指南
  • 蓝桥杯Scratch国赛真题解析:从“矿工挖宝”掌握事件驱动与坐标定位
  • 【单片机毕设案例分享】基于 STM32 或 51 单片机的双模式自适应温控风扇装置开发 基于 STM32 或 51 单片机的参数可视化智能风扇控制系统设计(025504)
  • Scratch国赛拼图题:状态机思维与坐标映射实战
  • 数字图像处理与深度学习结合的车牌识别系统设计
  • 游戏核心开发概念解析:从理论到实践
  • 水面舰艇编队防空建模:多智能体协同决策与MATLAB事件驱动实现
  • Java版WMS仓储管理系统源码核心拆解与二次开发实战
  • RAG安全问答系统实战:数据脱敏、防幻觉与审计追踪
  • 异步程序的复盘记录
  • STM32 ADC实战指南:从原理到配置,解决精度与噪声问题
  • Windows 11 24H2 LTSC 装回微软应用商店:三步快速全攻略
  • Wand 修改器解锁:免费本地解锁全部 Pro 功能
  • 机器学习预测钢管混凝土柱极限承载力:四种模型对比研究
  • 零依赖的 C++ JSON 库:nlohmann/json 三分钟上手
  • AI率过高致DeepSeek写文限流?2026年亲测有效一招高效恢复曝光
  • BetterNCM 安装指南:打不开、装不上、不生效,三阶段 7 个坑逐个排掉
  • M2M Wi-Fi模块选型与实战:低功耗与安全设计全解析