【发布时间】:2021-10-26 05:56:38
【问题描述】:
我有一个 numpy 数组,其中包含 4 个矩形/四边形坐标:
pts = np.array([(690, 110), (345, 130), (690, 300), (445, 298)])
请注意,这些不是按顺序排列的。
现在我想找到一个矩形/四边形的左上角、右上角、左下角、右下角。
点是这样随机排列的:
我设计了一些手动逻辑,但是不正确。需要一些帮助。我的逻辑:
import numpy as np
pts = np.array([(690, 110), (345, 130), (690, 300), (445, 298)])
min_X_Cord = pts[np.where(pts == pts[:, 0].min())[0]]
sec_min = pts[np.where(pts == np.unique(pts[:, 0])[1])[0]]
top2 = np.array([min_X_Cord, sec_min]).reshape(-1, 2)
top_left, bot_left = (
top2[np.where(top2 == top2[:, 1].max())[0]],
top2[np.where(top2 == top2[:, 1].min())[0]],
)
print(top_left, bot_left)
max_X_Cord = pts[np.where(pts == pts[:, 0].max())[0]]
sec_min = pts[np.where(pts == np.unique(pts[:, 0])[-2])[0]]
编辑
我的问题之前可能不清楚。如果坐标系上有 4 个点,则可以用它们制作一个矩形或四边形。现在的问题是,要做到这一点并对其执行一些进一步的操作,我确实需要知道哪个点是左上角,哪个是右上角,哪个是左下角,哪个是右下角。
例如,在这个数组中:
[[300,120], [213,306], [538, 171], [550, 374]]
(300, 110) 是左上角,(538, 171) 是右上角,(213, 306) 是左下角,(550, 374) 是右下角。它没有特定的顺序,有时我的坐标可能是这样的
[[213,306],[300,120], [550, 374], [538, 171]]
相同的坐标,不同的位置。
现在我要提取左上、右上、左下、右下。
【问题讨论】:
-
不清楚你想做什么。图片与什么有什么关系?
-
图片显示点1、2、3、4不按顺序排列,我想从中分类topl、topr、botl、botr。
标签: python arrays numpy rectangles