簡単な質問に苦労しています。私は次の形式のnumpy配列を持っています:
[[[ 1152.07507324 430.84799194]
[ 4107.82910156 413.95199585]
[ 4127.64941406 2872.32006836]
[ 1191.71643066 2906.11206055]]]
そして、バウンディングボックスを計算したいのですが、つまり、左端、最上部、右端、最下部のポイントが必要です。
これは正しい解決策であるはずです
[[[ 1152.07507324 413.95199585]
[ 4127.64941406 413.95199585]
[ 4127.64941406 2906.11206055]
[ 1152.07507324 2906.11206055]]]
私はそのトリックを実行する厄介な関数を開発しましたが、実際にはpythonic / numpyicではないため、非常に満足していません。
def bounding_box(iterable):
minimum_x = min(iterable[0], key=lambda x:x[0])[0]
maximum_x = max(iterable[0], key=lambda x:x[0])[0]
minimum_y = min(iterable[0], key=lambda x:x[1])[1]
maximum_y = max(iterable[0], key=lambda x:x[1])[1]
return numpy.array([[(minimum_x, minimum_y), (maximum_x, minimum_y), (maximum_x, maximum_y), (minimum_x, maximum_y)]], dtype=numpy.float32)
おそらくnumpyビルトインを使用して、上記の関数を最適化する方法を知っていますか?