背景
车牌识别技术(License Plate Recognition, LPR)是指利用计算机视觉和图像处理技术对车辆牌照进行自动识别和识别结果的处理。车牌识别技术可以分为两个阶段:车牌检测和车牌识别。车牌检测是指从整张图片中检测出车牌的位置和大小。车牌识别是指对车牌图像进行字符分割和字符识别,得到车牌号码。
车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。同时也是计算机视觉学习里一个比较典型的案例。本次黑客松,我们将使用intel pytorch 实现一个车牌识别的案例
一、环境准备
建议使用conda环境安装
conda create -n ipex python=3.8
conda activate ipex
安装所需的库:需要安装OpenCV和NumPy库来处理图像和数组。
pip install opencv-python
pip install numpy
然后安装intel 依赖,可以在官网上找到合适自己系统的包下载。
python -m pip install torch==1.13.0a0+git6c9b55e intel_extension_for_pytorch==1.13.120+xpu -f https://developer.intel.com/ipex-whl-stable-xpu
二、数据集处理
数据清洗主要包括去除无效数据、处理缺失值、处理异常值等。无效数据可能包括图像背景中的噪声、与车牌无关的文本等。缺失值可能由于数据采集过程中某些车牌图像未能成功提取而产生。异常值可能包括明显不符合车牌形状和大小的图像或明显错误的字符等。
数据划分:数据划分是将数据集划分为训练集、验证集和测试集。通常情况下,训练集用于训练模型,验证集用于调整模型的超参数,测试集用于评估模型的性能。
三、对图像进行预处理
首先,需要对原始图片进行预处理。常见的预处理方法包括灰度化、高斯模糊、边缘检测和形态学变换等。其中,灰度化是将彩色图片转化为灰度图,可以有效地降低计算量和增加对比度。高斯模糊可以去除图像中的噪声。边缘检测可以将车牌的轮廓提取出来。形态学变换可以进一步提取出车牌的轮廓。
def carlicense_distinguish(self):
lower_limi = np.array([80, 30, 0]) # 设置色域上下界
upper_limi = np.array([230, 110, 70])
img_init = cv2.imread(self.carlicense_content) # 加载原始图片
img_resize = cv2.resize(img_init, dsize=(1000, 600), fx=0, fy=0) # 重置图片尺寸
img_blur = cv2.blur(img_resize, (2, 2)) # 对图片进行降噪