#python
#python
Вопрос:
у меня есть обнаружение Хаара, и оно выдает мне несколько обнаружений поблизости:
[[ 31 85 232 116]
[141 55 66 33]
[112 41 104 52]]
каждый список имеет следующие значения: x,y,w,h
я хотел бы получить самый левый верхний X,Y
и самый правый нижний x,y
из всех обнаружений.
я пытался использовать min()
и max()
, но ot выдает ошибку. и после этого я попытался использовать Numpy, и я не могу сделать то, что мне нужно
import numpy as np
l = [10, 22, 8, 8, 11]
print(np.argmax(l))
print(np.argmin(l))
в моей проблеме список должен быть списком списков, и я хочу получить только меньший x,y
и больший x,y
Ответ №1:
x = [ [ 31,85,232,116],
[141,55,66,33],
[112,41,104,52]
]
Вы можете использовать пользовательский ключ со значениями первых 2 элементов, чтобы получить максимальное и минимальное значение. Поскольку вам нужно нарисовать ограничивающую рамку вокруг всех границ, вам нужно найти минимум x,y
пары и максимум x w,y h
пары
Это предполагает, что значения x, y всегда положительны, что нормально в сценарии изображения.
min(x,key=lambda x:(x[0],x[1]))[:2]
max([(e[0] e[2],e[1] e[3]) for e in x ])
Выход:
[31, 85]
(263, 201)
Комментарии:
1. мне нужен следующий вывод: (x1: 31, y1:41, x2: 141, y2: 85)
2. Так что это похоже
min of 1st value
на ,min of 2nd value
иmax of 1st
,max of 2nd
?3. мне нужно нарисовать ограничивающую рамку вокруг всех границ, возвращенных в моем обнаружении
4. тогда разве ответ не должен быть
31,85
and(263, 201)
? самый низкийx y
и самый высокийx w,y h
5. Обновлен мой ответ, дайте мне знать, если это то, что вы ищете