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代码文件,通过调用界面部分的代码同时加入对应的逻辑处理代码 。
推荐阅读
- 网赚网盘程序怎么弄 网赚网盘程序教程
- ocr图片文字识别软件 免费的ocr识别app
- 联想刷机怎么弄 联想刷机教程图解
- 文档转换成图片怎么弄 免费pdf转图片
- 中文语音识别 人工智能语音识别技术
- 网络实名认证怎么弄 微信实名认证操作
- pdf ocr文字识别软件 最好用的ocr文字识别软件
- 个税网上申报怎么弄 网上缴纳个税流程
- 京东换货怎么弄 京东换货流程操作
- 人脸识别器怎么样 人脸识别器品牌介绍