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

2024-05-16 16:21:48 发布

您现在位置: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。有没有什么方法可以使用循环来声明这些字母的值,而不是手动逐个声明?请帮忙。多谢各位


Tags: 方法声明字母手动校验汽车公式ocr
2条回答

有两种方法可以搜索这些值。其中之一是使用提供的@sal之类的列表数据类型。另一种方法是使用字典数据类型

***

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

***

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'])

这将导致0

但是,如果试图打印“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, ....

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

列表如下所示:

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

相关问题 更多 >