车号识别怎么弄 车号识别系统推荐( 三 )


def drawRectBox(image, rect, addText, fontC):cv.rectangle(image, (int(round(rect[0])), int(round(rect[1]))),(int(round(rect[2]) + 8), int(round(rect[3]) + 8)),(0, 0, 255), 2)cv.rectangle(image, (int(rect[0] - 1), int(rect[1]) - 16), (int(rect[0] + 75), int(rect[1])), (0, 0, 255), -1, cv.LINE_AA)img = Image.fromarray(image)draw = ImageDraw.Draw(img)draw.text((int(rect[0] + 1), int(rect[1] - 16)), addText, (255, 255, 255), font=fontC)imagex = np.array(img)return imagex我们首先读取图片文件,利用前面的
HyperLPR_plate_recognition方法识别出车牌结果,调用以上函数获得带标注框的图片,利用OpenCV的imshow方法显示结果图片,其代码如下:
image = cv.imread('test3.jpeg')# 读取选择的图片res_all = HyperLPR_plate_recognition(image)fontC = ImageFont.truetype("./platech.ttf", 14, 0)res, confi, axes = res_all[0]image = drawRectBox(image, axes, res, fontC)cv.imshow('Stream', image)c = cv.waitKey(0) & 0xff此时运行以上代码可以得到如下结果:

车号识别怎么弄 车号识别系统推荐


同理,识别视频中的车牌也可以做类似的操作,不过我们需要先对视频文件进行逐帧读取,然后采用以上的方式在图片中标识出车牌并显示 。这部分代码如下:
capture = cv.VideoCapture("./车牌检测.mp4")# 读取视频文件fontC = ImageFont.truetype("./platech.ttf", 14, 0)# 字体,用于标注图片i = 1while (True):ref, frame = capture.read()if ref:i = i + 1if i % 5 == 0:i = 0res_all = HyperLPR_plate_recognition(frame)# 识别车牌if len(res_all) > 0:res, confi, axes = res_all[0]# 获取结果frame = drawRectBox(frame, axes, res, fontC)cv.imshow("num", frame)# 显示画面if cv.waitKey(1) & 0xFF == ord('q'):break# 退出else:break以上代码每5帧识别一次视频中的车牌,将车牌的结果标注在画面中进行实时显示,运行结果的截图如下所示:
车牌的识别部分代码演示完毕,对此我们完成了图片和视频的识别,然而这些还是简单的脚本呈现 。为了方便更换图片、视频以及管理车牌,还需要设计文件选择功能以及系统的UI界面 。打开QtDesigner软件,拖动以下控件至主窗口中,车牌识别系统的界面设计如下图所示:控件界面部分设计好,接下来利用PyUIC工具将.ui文件转化为.py代码文件,通过调用界面部分的代码同时加入对应的逻辑处理代码 。

推荐阅读