【发布时间】:2018-11-28 03:58:55
【问题描述】:
我需要分析坐标列表。程序应该“总结”列表。
from PIL import Image
im = Image.open('map.png')
rgb_im = im.convert('RGB')
l = []
x = 0
y = 0
for y in range(im.size[1]):
for x in range(im.size[0]):
if sum(rgb_im.getpixel((x, y))) == 0:
a = [x, y]
l.append(a)
这会从一张图像中生成所有黑色像素的坐标列表,该图像在白色表面上有几个黑色矩形。输出是这样的:
[[599, 257], [600, 257], [601, 257], [602, 257], [603, 257], [604, 257], [605, 257], [606, 257], [599, 258], [600, 258], [601, 258], [602, 258], [603, 258], [604, 258], [605, 258], [606, 258], [599, 259], [600, 259], [601, 259], [602, 259], [603, 259], [604, 259], [605, 259], [606, 259], [599, 260], [600, 260], [601, 260], [602, 260], [603, 260], [604, 260], [605, 260], [606, 260], [599, 261], [600, 261], [601, 261], [602, 261], [603, 261], [604, 261], [605, 261], [606, 261], [599, 262], [600, 262], [601, 262], [602, 262], [603, 262], [604, 262], [605, 262], [606, 262], [599, 263], [600, 263], [601, 263], [602, 263], [603, 263], [604, 263], [605, 263], [606, 263], [622, 286], [623, 286], [624, 286], [625, 286], [626, 286], [627, 286], [622, 287], [623, 287], [624, 287], [625, 287], [626, 287], [627, 287], [622, 288], [623, 288], [624, 288], [625, 288], [626, 288], [627, 288], [622, 289], [623, 289], [624, 289], [625, 289], [626, 289], [627, 289], [622, 290], [623, 290], [624, 290], [625, 290], [626, 290], [627, 290], [622, 291], [623, 291], [624, 291], [625, 291], [626, 291], [627, 291]]
“摘要”应该是关于黑色矩形的信息。输出应该是:每个矩形的[x-coordinate, y-coordinate, length, height],这需要原点的坐标。
在这种情况下:[[599, 257, 8, 7], [622, 287, 6, 6]]
我不知道我是否应该使用数组或矩阵或完全不同的东西。我对想法持开放态度。重要的部分是从这些图像中获取信息。
提前谢谢大家!
【问题讨论】:
-
看起来像一个巧妙的问题,只是为了澄清 length 和 high 的语言,你的意思是 width 和身高?此外,他们不计算 x/y 坐标的同一行/列? [599, 257, 7, 6] 意味着 7 • 6 = 42 像素,但您似乎使用该特定组覆盖了 56 像素。
-
您可能需要查找floodfill。这可能是一个潜在的算法。
-
矩形的形容词是矩形。我让你看看你用的是什么。
-
我还不能解决问题。但是谢谢
标签: python-3.x list algorithm tkinter