Opencv присоединяется к ограничивающим рамкам python

#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. Обновлен мой ответ, дайте мне знать, если это то, что вы ищете