sudoku-solver 的 2 种玩法:Live Solver 实时求解与 Gallery 图片求解,还有隐藏的提示模式
【免费下载链接】sudoku-solverSmart solution to solve sudoku in VR项目地址: https://gitcode.com/gh_mirrors/su/sudoku-solver
sudoku-solver 是一个用 OpenCV + 深度学习(CNN)实现的数独求解器,它能在增强现实中自动检测纸面数独网格、识别数字并直接求解,还内置了一个很多人不知道的"提示模式(Hint Mode)"。本文带你快速上手它的 2 种核心玩法:相机实时求解与相册图片求解。
快速开始:3 步跑通 sudoku-solver 数独求解器
1️⃣ 克隆仓库:
git clone https://gitcode.com/gh_mirrors/su/sudoku-solver cd sudoku-solver2️⃣ 安装依赖(Numpy、OpenCV、TensorFlow、KivyMD >= 1.11.1):
pip install numpy opencv-python tensorflow3️⃣ 启动应用(入口为 kivy_md.py):
python3 kivy_md.py启动后底部导航栏有 3 个入口:Live Solver(实时求解)、Gallery Solver(相册求解)、About(关于)。
它的核心识别流水线是:预处理增强高频细节 → 霍夫变换找直线 → 分析出网格边界,相关实现见 src/extract_n_solve/grid_detector.py。识别出的数字会交给一个作者用 1 万+ 数字数据集训练、精度 99.5%+ 的 CNN(模型文件在 model/my_model.h5)分类,最后由回溯算法求解并"画回"原图,见 src/extract_n_solve/grid_solver.py。
玩法一:Live Solver 实时求解(相机模式)
这是项目最酷的玩法——把相机对准纸面数独,程序会实时在画面上标出答案。
界面下方有 3 个按钮,各有用途:
| 按钮 | 作用 |
|---|---|
| Hint Mode | 提示模式,只给出 1 个正确答案(下面细讲) |
| Full Solve | 完整求解,一次性填满全部空格 |
| Solve / Unfreeze | 点击后冻结画面并求解;再点 Unfreeze 恢复实时画面 |
使用技巧:画面是连续识别的,先按Solve冻结当前帧再求解,结果会更稳定。核心逻辑在 uix/ScreenLiveSolver.py,视频帧通过 src/video_objects/VideoStream.py 读取。
视频模式有个细节:程序会连续多帧校验,确认提取的数字网格两次一致才求解,避免识别错误;已经解过的网格也不会重复求解(见 src/solving_objects/SudokuVideo.py)。
玩法二:Gallery Solver 相册图片求解
不想用相机?切换到Gallery Solver页面,点 "Select An Image !" 从设备相册里挑一张数独照片即可。
选中图片后,程序走和实时模式完全相同的求解管线(uix/ScreenGallerySolver.py 中调用solve_1_img),并把结果覆盖显示在原图上:
求解完成后,所有空格会被绿色数字自动填满:
项目里 images_test/ 目录下还有大量实拍测试图(手机翻拍、扭曲纸张、双网格等),对应的求解结果都在 images_test/solved/ 中,可见它对拍照歪斜、光照不均的场景都有不错的鲁棒性。
隐藏玩法:Hint Mode 提示模式,只告诉你 1 个答案
在 Live Solver 中点选Hint Mode后,求解器不再给出完整答案,而是只填补 1 个空格,其余保持空白——相当于一个随身数独小老师。
它的工作原理在 src/solving_objects/Sudoku.py 的give_an_hint()方法:程序内部先算出完整解,但只对比原始网格与完整解,返回第一个不同的格子作为提示,其余数字一律不透露。实现上,src/SolverVR.py 的solve_1_img()接收hint_mode参数,透传给求解器切换行为:
Full Solve → 返回完整答案网格 Hint Mode → 只返回原始网格 + 1 个提示数字适合边玩边学:卡住时点一次提示,既不打断思考,又始终有方向。
常见问题
Q:为什么要求解的图片最好是 .jpg / .png?Gallery Solver 在 uix/ScreenGallerySolver.py 中只接受jpg、png结尾的图片,其他格式选完不会报错但也不会处理。
Q:识别准确率如何?数字识别由 CNN 完成,置信度阈值配置在 settings.py(thresh_conf_cnn),作者实测数据集精度 99.5% 以上。
Q:一张图上有多个数独怎么办?支持!网格检测阶段会找出所有数独区域(readme_images/grid_extraction.png 右图就是双网格场景),并逐格求解后分别重建。
小结
- 📷Live Solver:相机实时求解,还能冻结画面手动控制
- 🖼️Gallery Solver:相册选图,一键解出整张报纸上的数独
- 💡Hint Mode:隐藏的提示模式,只给 1 个答案,边玩边学
sudoku-solver 把"拍一张照 → 自动填答案"变成了现实,源码结构清晰(src/ 算法、uix/ 界面),非常适合作为计算机视觉 + 数独算法的学习项目。
【免费下载链接】sudoku-solverSmart solution to solve sudoku in VR项目地址: https://gitcode.com/gh_mirrors/su/sudoku-solver
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考