2021SC@SDUSC
概述
本篇依旧是对pipline.py文件中的SimpleRecognizePlate()函数展开解析,逐渐深挖至底层
此次文章主要分析SimpleRecognizePlate()函数部分代码,如下
ptype = td.SimplePredict(plate)
if ptype>0 and ptype<5:
plate = cv2.bitwise_not(plate)
代码分析
ptype = td.SimplePredict(plate)
引入了hyperlpr_py3文件夹下的typeDistinguish.py文件的simplePredict()函数,即
def SimplePredict(image):
image = cv2.resize(image, (34, 9))
image = image.astype(np.float) / 255
res = np.array(model.predict(np.array([image]))[0])
return res.argmax()
首先调用库cv2的resize()函数对图片进行裁剪操作,将图片裁剪至对应车牌大小
然后使用了astype()函数,对图片进行强制类型转换,主要目的是为防止image中的数据超出float64的边界,导致数据的出错
再然后,对该图片进行一个输出预测
最后返回一个图像的维度的最大值的序号
argmax()函数
该函数用于返回指定维度最大值的序号
if ptype>0 and ptype<5:
plate = cv2.bitwise_not(plate)
根据返回图像的维度的最大值的序号,将图片里像素值进行按位反向的操作
cv2.bitwise_not()函数
image = cv2.bitwise_not(src, dst=None, mask=None)
其中src表示要进行操作的图像,dst是输出的图像(其实就是得到的image),一般不写就好了
bitwise_not的作用是取反操作
例子:下为脸部面具图,背景为白色,利用按位操作及掩膜技术清晰抠出面具轮廓。
对脸部面具图里的像素值进行按位反后获得的图像