# 四边形点的顺时针排序
def order_points_new(self, pts):
# sort the points based on their x-coordinates
xSorted = pts[np.argsort(pts[:, 0]), :]
# grab the left-most and right-most points from the sorted
# x-roodinate points
leftMost = xSorted[:2, :]
rightMost = xSorted[2:, :]
if leftMost[0, 1] != leftMost[1, 1]:
leftMost = leftMost[np.argsort(leftMost[:, 1]), :]
else:
leftMost = leftMost[np.argsort(leftMost[:, 0])[::-1], :]
(tl, bl) = leftMost
if rightMost[0, 1] != rightMost[1, 1]:
rightMost = rightMost[np.argsort(rightMost[:, 1]), :]
else:
rightMost = rightMost[np.argsort(rightMost[:, 0])[::-1], :]
(tr, br) = rightMost
# return the coordinates in top-left, top-right,
# bottom-right, and bottom-left order
return np.array([tl, tr, br, bl], dtype="float32")
c = [[243.,9.], [ 4.,12.], [245.,233.], [ 4.,236.]]
c = np.array(c)
order_points_new_kp2 = order_points_new(c)
# 这种排序并不适合四边形点的顺时针排序
# pred_points = np.array(sorted(pred_points, key=lambda k: [k[0], k[1]]))