首页 > 解决方案 > 使用枕头识别数独网格中的数字

问题描述

我正在制作一个数独求解器,我希望能够从数独网格中识别数字。我正在使用枕头的裁剪工具来裁剪正方形,然后查看它们是否与任何数字的 png 匹配。但是我用来裁剪正方形的功能并不一致。

我尝试首先调整图像大小,使所有正方形大小相同,然后根据行和列输入进行裁剪,然后乘以图像大小的九分之一。但这最终包括了使图像不同的不必要的线条,所以我缩小了裁剪的大小。我尝试了许多不同的偏移量,但没有一个会起作用。

Sudoku = Image.open('image.png')
w,h = Sudoku.size
new_w = w//9*9
new_h = h//9*9
Sudoku = Sudoku.resize((new_w,new_h))

def get_square(r,c,cutoff):
  square_size = Sudoku.size[0]/9
  Top = r*square_size+cutoff
  Left = c*square_size+cutoff
  Bottom = (r+1)*square_size-cutoff
  Right = (c+1)*square_size-cutoff
  tup = (Left,Top,Right,Bottom)
  return Sudoku.crop(tup)

我希望正方形能够正常显示,并且每个正方形的数字总是出现在同一个地方。相反,当我将一个数字的图像保存在一个正方形中,然后将其与来自不同正方形的相同数字进行比较时,这些数字被移动而不是排列。有任何想法吗?

标签: pythonpython-imaging-librarysudoku

解决方案


推荐阅读