大致如图 先定义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()