我有以下类型的字典(x, y): id
{
(91, 23): 1, (65, 24): 6, (47, 35): 4, (17, 20): 0, (56, 25): 6, (79, 38): 8, (18, 19): 0, (43, 25): 4, (61, 38): 6,
(44, 28): 4, (48, 37): 4, (72, 34): 8, (71, 26): 8, (73, 35): 8, (80, 34): 8, (81, 35): 8, (12, 17): 0, (63, 30): 6,
(15, 34): 0, (33, 36): 3, (49, 38): 4, (7, 22): 0, (29, 37): 3, (57, 29): 6, (64, 32): 6, (10, 36): 0, (43, 30): 4,
(58, 26): 6, (32, 25): 3, (94, 23): 1, (18, 36): 0, (96, 38): 1, (45, 28): 4, (73, 36): 8, (80, 25): 8, (59, 36): 6,
(9, 19): 0, (74, 35): 8, (81, 36): 8, (96, 28): 1, (97, 25): 1, (24, 33): 3, (26, 33): 3, (46, 30): 4, (16, 29): 0,
(17, 24): 0, (89, 33): 1, (94, 30): 1, (18, 31): 0, (13, 18): 0, (95, 31): 1, (94, 32): 1, (9, 20): 0, (24, 28): 3,
(14, 19): 0, (81, 29): 8, (96, 19): 1, (95, 37): 1, (10, 19): 0, (75, 35): 8, (82, 26): 8
}
如何查找所有ID的minX
,maxX
,minY
和maxY
?
注意:ID是数字但不是连续的。像0,1,3,4,6,8
澄清:
此词典是应用于图像的连接分量标记算法的结果。对于给定的(x, y): id
,x
和y
显示像素的位置,id
显示id的提取的blob。我想找到所有blob的minX
,maxX
,minY
和maxY
,并从图像中提取这些blob。最后,我想知道blob的界限,如
{
id1:(minx,maxx,minY,maxY),
id2:(minx,maxx,minY,maxY)
}
答案 0 :(得分:1)
也许这样的事情会起作用:
x = []
y = []
for coordinates in dict.keys():
x.append(coordinates[0])
y.append(coordinates[1])
minX = min(x)
maxX = max(x)
minY = min(y)
maxY = max(y)
答案 1 :(得分:1)
这是工作答案。可能这不是最好的答案。
box = {}
for (x,y),id in labels.items():
if id not in box:
box[id] = (x,y,x,y)
else:
minX = min(box.get(id)[0],x)
minY = min(box.get(id)[1],y)
maxX = max(box.get(id)[2],x)
maxY = max(box.get(id)[3],y)
box[id] = (minX,minY,maxX,maxY)