Skip to content
Snippets Groups Projects
Commit b04b1a16 authored by Taddeus Kroes's avatar Taddeus Kroes
Browse files

Fixed 80 character limit.

parent 81644280
No related branches found
No related tags found
No related merge requests found
...@@ -18,30 +18,30 @@ class LicensePlate: ...@@ -18,30 +18,30 @@ class LicensePlate:
self.height = int(properties['height']) self.height = int(properties['height'])
self.read_xml() self.read_xml()
def are_corners_sorted(corners): def are_corners_sorted(corners):
''' Check if points are sorted clockwise, starting in the left-top '''Check if points are sorted clockwise, starting in the left-top
corner.''' corner.'''
x0, y0 = corners[0].to_tuple() x0, y0 = corners[0].to_tuple()
x1, y1 = corners[1].to_tuple() x1, y1 = corners[1].to_tuple()
x2, y2 = corners[2].to_tuple() x2, y2 = corners[2].to_tuple()
x3, y3 = corners[3].to_tuple() x3, y3 = corners[3].to_tuple()
return x0 < x1 and y1 <= y2 and x2 >= x3 and y3 > y0 return x0 < x1 and y1 <= y2 and x2 >= x3 and y3 > y0
def sort_corners(corners): def sort_corners(corners):
'''Sort the corners clockwise, starting in the left-top corner. ''' '''Sort the corners clockwise, starting in the left-top corner.'''
tuples = [] tuples = []
output = [] output = []
for point in corners: for point in corners:
tuples.append(point.to_tuple()) tuples.append(point.to_tuple())
bot1 = (0, 0) bot1 = (0, 0)
bot2 = (0, 0) bot2 = (0, 0)
top1 = None top1 = None
top2 = None top2 = None
# Get bottom points (where the y value is the largest). The top points # Get bottom points (where the y value is the largest). The top points
# are the points that are not a bottom point. # are the points that are not a bottom point.
for tup in tuples: for tup in tuples:
...@@ -50,7 +50,7 @@ class LicensePlate: ...@@ -50,7 +50,7 @@ class LicensePlate:
top1 = bot2 top1 = bot2
else: else:
top2 = bot2 top2 = bot2
if tup[1] > bot1[1]: if tup[1] > bot1[1]:
bot2 = bot1 bot2 = bot1
bot1 = tup bot1 = tup
...@@ -61,7 +61,7 @@ class LicensePlate: ...@@ -61,7 +61,7 @@ class LicensePlate:
top1 = tup top1 = tup
else: else:
top2 = tup top2 = tup
# First point is the smallest x-value top point, second is the other # First point is the smallest x-value top point, second is the other
# top point # top point
if top1[0] < top2[0]: if top1[0] < top2[0]:
...@@ -70,7 +70,7 @@ class LicensePlate: ...@@ -70,7 +70,7 @@ class LicensePlate:
else: else:
output.append(Point(top2[0], top2[1])) output.append(Point(top2[0], top2[1]))
output.append(Point(top1[0], top1[1])) output.append(Point(top1[0], top1[1]))
# Third point is the bottom point with the largest x-value, fourth is # Third point is the bottom point with the largest x-value, fourth is
# the other bottom point # the other bottom point
if bot1[0] > bot2[0]: if bot1[0] > bot2[0]:
...@@ -79,9 +79,9 @@ class LicensePlate: ...@@ -79,9 +79,9 @@ class LicensePlate:
else: else:
output.append(Point(bot2[0], bot2[1])) output.append(Point(bot2[0], bot2[1]))
output.append(Point(bot1[0], bot1[1])) output.append(Point(bot1[0], bot1[1]))
return output return output
# sets the entire license plate of an image # sets the entire license plate of an image
def retrieve_data(self, corners): def retrieve_data(self, corners):
x0, y0 = corners[0].to_tuple() x0, y0 = corners[0].to_tuple()
...@@ -111,16 +111,16 @@ class LicensePlate: ...@@ -111,16 +111,16 @@ class LicensePlate:
or_coor = dot(P, ([[i],[j],[1]])) or_coor = dot(P, ([[i],[j],[1]]))
or_coor_h = (or_coor[1][0] / or_coor[2][0], or_coor_h = (or_coor[1][0] / or_coor[2][0],
or_coor[0][0] / or_coor[2][0]) or_coor[0][0] / or_coor[2][0])
data[j][i] = self.pV(or_coor_h[0], or_coor_h[1]) data[j][i] = self.pV(or_coor_h[0], or_coor_h[1])
return data return data
def get_transformation_matrix(self, matrix): def get_transformation_matrix(self, matrix):
# Get the vector p and the values that are in there by taking the SVD. # Get the vector p and the values that are in there by taking the SVD.
# Since D is diagonal with the eigenvalues sorted from large to small on # Since D is diagonal with the eigenvalues sorted from large to small
# the diagonal, the optimal q in min ||Dq|| is q = [[0]..[1]]. Therefore, # on the diagonal, the optimal q in min ||Dq|| is q = [[0]..[1]].
# p = Vq means p is the last column in V. # Therefore, p = Vq means p is the last column in V.
U, D, V = svd(matrix) U, D, V = svd(matrix)
p = V[8][:] p = V[8][:]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment