Last active
July 23, 2023 17:19
Revisions
-
flashlib renamed this gist
Mar 27, 2018 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
flashlib created this gist
Mar 27, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,45 @@ from imutils import perspective import numpy as np def order_points_new(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:, :] # now, sort the left-most coordinates according to their # y-coordinates so we can grab the top-left and bottom-left # points, respectively leftMost = leftMost[np.argsort(leftMost[:, 1]), :] (tl, bl) = leftMost # if use Euclidean distance, it will run in error when the object # is trapezoid. So we should use the same simple y-coordinates order method. # now, sort the right-most coordinates according to their # y-coordinates so we can grab the top-right and bottom-right # points, respectively rightMost = rightMost[np.argsort(rightMost[:, 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") pts = np.array([[10,10], [10,20], [20,20], [30,10]]) ordered_old = perspective.order_points(pts) ordered_new = order_points_new(pts) print("raw points") print(pts.astype("int")) print("ordered by Euclidean distance") print(ordered_old.astype("int")) print("orderd by y-coordinates") print(ordered_new.astype("int")) print("")