实时车牌识别使用树莓派和Python
扫描二维码
随时随地手机看文章
之前我们学习了使用树莓派和OpenCV的人脸识别。今天我们就用这两个来用python构建一个车牌识别系统。实时车牌检测和识别对于自动收费站,找出交通规则违规者以及解决其他与车辆相关的安全问题非常有用。
所以在本教程中,我们将建立一个实时车牌识别系统使用树莓派和派相机。该系统采用OpenCV和光学字符识别技术实现车牌的自动识别和读取。Pi相机模块连续捕获帧,当按下键盘上的一个键时,它将最后一帧保存为新图像。然后利用OpenCV中的轮廓函数对车牌进行检测。最后,树莓派裁剪出特定区域,并执行光学字符识别来读取车牌号码。
组件的要求
•覆盆子π
•π的相机
这里只使用树莓派和Pi相机来构建这个树莓派车牌识别系统。我们之前使用树莓派相机,并使用它构建了一些项目,如Web控制树莓派监控机器人,基于物联网的智能Wi-Fi门铃,智能闭路电视监控系统等。
要了解有关如何将Pi相机与树莓派接口的更多信息,请遵循我们之前的教程。
车牌识别的先决条件
这里我们使用OpenCV库来检测和识别车牌,使用Tesseract库来读取字符。因此,在继续之前,首先安装OpenCV、Tesseract和其他必需的库。我们之前在树莓派项目中使用了OpenCV进行人脸识别。
在树莓派3上安装OpenCV
这里使用OpenCV库来检测和识别人脸。要安装OpenCV,首先要更新树莓派。
然后使用以下命令安装所需的依赖项,以便在树莓派上安装OpenCV。
之后,使用下面的命令在树莓派上安装OpenCV。
安装超正方体
要安装Tesseract,首先,使用下面的命令配置Debian软件包(dpkg):
之后,使用apt-get选项安装Tesseract OCR(光学字符识别)。
之后,使用pip安装pytesseract。
之后,使用下面的命令安装PYTTSX3库,用于文本到语音的转换:
安装imutils
imutils用于使基本的图像处理功能,如平移、旋转、调整大小、骨架化和显示Matplotlib图像更容易使用OpenCV。使用以下命令安装imutils:
SMTP邮件设置树莓派车牌识别
SMTP (Simple Mail Transfer Protocol)是在TCP/IP网络上提供电子邮件服务的标准协议。该服务器提供接收和发送电子邮件消息的功能。当树莓派检测并识别车牌时,我们使用SMTP发送邮件。
要在树莓派上使用SMTP服务,我们首先必须在树莓派上安装SMTP库。使用下面的命令来安装:
现在我们必须编辑配置文件。为此,使用以下命令打开配置文件:
然后加上下面的行。不要忘记添加您的电子邮件和电子邮件密码。
用树莓派进行车牌识别的Python编程
车牌识别OpenCV python代码涉及三个主要步骤。第一步是车牌检测。利用轮廓函数检测图像中的矩形物体,找到车牌号码。第二步是字符分割。一旦轮廓检测到车牌,我们必须裁剪出来,并保存为一个新的图像。最后一步是字符识别。我们将对裁剪后的图像执行光学字符识别来检测数字。
完整的python车牌识别代码在本页末尾给出。我们在这里解释代码。
在代码的开头,为这个项目导入所需的包。
然后初始化相机对象,将分辨率设置为(640,480),帧率设置为30 fps。
然后使用capture_continuous函数开始从树莓派相机捕获帧。我们使用键盘键‘ S ’来捕捉一个特定的帧。
当键盘键被按下时,它将占用最后一帧。在捕获最后一帧后,它将使用双边过滤器功能从捕获的图像中删除不需要的细节。
去除不需要的细节后,使用Canny Edge Method进行边缘检测。
现在我们将在图像上寻找轮廓。然后将检测到的轮廓由大到小进行排序。
树莓派可以找到多个轮廓,所以我们需要在得到的结果中搜索一个有四个边的矩形轮廓和一个闭合图形来过滤车牌轮廓。
找到车牌后,把除车牌以外的所有东西都遮起来
在对除车牌区域外的整个图像进行屏蔽后,我们将裁剪出车牌区域并将其保存为新图像。
现在,在最后一步中,使用Tesseract库从车牌图像读取字符,并将识别的字符存储在“text”变量中。如前所述,当Pi检测到车牌时,我们也会发送邮件。因此,车牌信息将发送到上述电子邮件地址。发送邮件的代码如下。
这是如何使用Python和树莓派构建车牌识别。这个项目的结果不会100%准确。有时它无法检测到车牌,或者有时它读取一些垃圾值。结果很大程度上取决于图像质量和图像方向。
本文编译自iotdesignpro