如何使用Python进行新加坡汽车牌照识别的校验和



我能够识别汽车牌照并提取车牌值。有时,结果是不准确的,因为我正在使用OCR进行识别。我使用校验和来确保只打印和查看正确的结果。在计算了校验和之后,我需要使用另一个公式来得到盘子的最后一个字母。与这19个字母匹配,A=0,Z=1,Y=2,X=3,U=4,T=5,S=6,R=7,P=8,M=9,L=10,K=11,J=12,H=13,G=14,E=15,D=16,C=17,B=18。有没有什么方法可以使用循环来声明这些字母的值,而不是手动一个接一个地声明?请帮忙。非常感谢。

您可以使用列表并根据需要执行查找。

列表如下:

plate_letter_list = ['A', 'Z', 'Y', 'X', 'U', 'T', 'S', 'R', 'P', 'M', 'L', 'K', 'J', 'H', 'G', 'E', 'D', 'C', 'B']

案例1:从字母中查找值

如果需要查找与字母关联的数值,请使用index方法:

letter = 'T'
print(plate_letter_list.index(letter))
>> 5

案例2:从值查找字母

如果您需要查找与数值关联的字母,请将其用作索引:

value = 13
print(plate_letter_list[value])
>> H

有两种方法可以搜索这些值。其中之一是使用List数据类型,如提供的@sal。另一种方法是使用Dictionary数据类型

**

使用列表数据类型的解决方案

**

pl_vals_list = ['A', 'Z', 'Y', 'X', 'U', 'T', 'S', 'R', 'P', 'M', 'L', 'K', 'J', 'H', 'G', 'E', 'D', 'C', 'B']

然后,您可以通过位置进行查找

要按位置进行搜索,将为您提供分配给字母表的值。

print(pl_vals_list[0])。这将导致A

或者,您可以通过字母表本身进行搜索。在这种情况下,您必须使用index()函数。

print(pl_vals_list.index('A'))。这将产生你给字母表分配的数字。结果将是0

这为您提供了一种基于字母表或值进行查找的方法。

您也可以使用检查字母表是否在列表中

if 'A' in pl_vals_list:
#then do something for value A
elif 'B' in pl_vals_list:
#then do something for value B
else:
#then do something

您还可以使用for循环和枚举来遍历列表。然而,我不知道这对你是否有价值。

for i, v in enumerate(pl_vals_list):
#do something with each value in the list
#here i will store the index, and v will have the value - A, B, C, etc

你可以得到每一个的价值,并决定你想做什么。

**

使用字典数据类型的解决方案

**

同样,你也可以使用字典来做同样的事情。

pl_vals_dict = {'A':0, 'Z':1, 'Y':2, 'X':3, 'U':4, 'T':5, 'S':6, 'R':7, 'P':8, 'M':9, 'L':10, 'K':11, 'J':12, 'H':13, 'G':14, 'E':15, 'D':16, 'C':17, 'B':18}

要在字典中查找字母,可以使用

if 'A' in pl_vals_dict.keys():
#then do something for value A
elif 'A' in pl_vals_dict.keys():
#then do something for value B
else:
#do something else

另一种检查方法是:

x = True if 'F' in pl_vals_dict.keys() else False

在这种情况下,x的值为False

您也可以使用get((函数来获取值。

x = pl_vals_dict.get('A')  # OR
print (pl_vals_dict.get('A')

查找字典值的最简单方法是:

print (pl_vals_dict['A'])

这将导致CCD_ 11

但是,如果您尝试打印"F"的值,则必须小心,因为"F"不是字典中键值对的一部分,因此会引发错误。

print (pl_vals_dict['F'])

这将给您以下错误:

Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
pl_vals_dict['F']
KeyError: 'F'

与列表类似,您还可以在字典中迭代键和值。不确定你是否需要使用这个,但这里有一个例子。

for k, v in pl_vals_dict.items():
#do something with each pair of key and value
#here k will have the keys A Z Y X ....
#and v will have the values 1, 2, 3, 4, ....

最新更新