求大神帮小白写个代码

大致如图 先定义n*m 个格子元素 然后在里面放一条带 如果带的面积占格子的1/2以上就将该格子位置提取, 并且可以像class一样, 在里面存储属性,比如颜色等。最后按线的方向顺序输出这些格子元素(设线的方向是由左到右的)。 有什么要求和疑问具体可以加qq2410913785

from tkinter import *
from PIL import Image, ImageTk

# 格子数目
n,m = 50,30
# 格子大小
d = 10
# 格子元素数据,x,y是格子的坐标,num是格子内的像素数,你也可以添加其它的属性。
arr = [[{"x":x, "y":y, "num":0} for x in range(n)] for y in range(m)]
# 创建窗口和画布
root = Tk()
canv = Canvas(root, width=n*d, height=m*d)
canv.pack()
# 加载你的线条图片
im = Image.open("pic.png")
im2 = ImageTk.PhotoImage(im)
canv.create_image(0,0,anchor=NW,image=im2)
# 获取图片像素数据
pix = im.load()
for x in range(n*d):
    for y in range(m*d):
        rgb = pix[x, y]
        # 如果当前像素数据不是白色,则对应的格子内像素数+1
        if rgb!=(255,255,255):
            arr[y//d][x//d]['num'] += 1

for x in range(n):
    for y in range(m):
        # 如果线条的面积占格子的1/2以上就将该格子位置输出
        if arr[y][x]['num'] >= d**2/2:
            print("x=",x,"y=",y,"格子数据=",arr[y][x])
            canv.create_rectangle(x*d, y*d, x*d+d-1, y*d+d-1, outline="#00f")
        else:
            canv.create_rectangle(x*d, y*d, x*d+d-1, y*d+d-1, outline="#ccc")

root.mainloop()