如何使用Python检测和识别车牌?
车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。
本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理,检测和识别车牌,最后显示车牌字符,作为输出内容。 一、创建Python环境
要轻松地完成本教程,您需要熟悉Python基础知识。应先创建程序环境。在开始编程之前,您需要在环境中安装几个库。打开任何Python IDE,创建一个Python文件。在终端上运行命令以安装相应的库。您应该在计算机上预先安装Python PIP。 OpenCV-Python:您将使用这个库对输入图像进行预处理,并显示各个输出图像。 pip install OpenCV-Python imutils:您将使用这个库将原始输入图像裁剪成所需的宽度。 pip install imutils pytesseract:您将使用这个库提取车牌字符,并将它们转换成字符串。 pip install pytesseract pytesseract库依赖Tesseract OCR引擎进行字符识别。 二、如何在您的计算机上安装Tesseract OCR?
Tesseract OCR是一种可以识别语言字符的引擎。在使用pytesseract库之前,您应该在计算机上安装它。步骤如下:
1. 打开任何基于Chrome的浏览器。
2. 下载Tesseract OCR安装程序。
3. 运行安装程序,像安装其他程序一样安装它。
准备好环境并安装tesseract OCR后,您就可以编写程序了。
1、导入库
首先导入在环境中安装的库。导入库让您可以在项目中调用和使用它们的函数。 import cv2 import imutils import pytesseract
您需要以cv2形式导入OpenCV-Python库。使用与安装时相同的名称导入其他库。
2、获取输入
然后将pytesseract指向安装Tesseract引擎的位置。使用cv2.imread函数将汽车图像作为输入。将图像名称换成您在使用的那个图像的名称。将图像存储在项目所在的同一个文件夹中,以方便操作。 pytesseract.pytesseract.tesseract_cmd = "C:Program FilesTesseract-OCRtesseract.exe" original_image = cv2.imread("image3.jpeg")
您可以将下面的输入图像换成想要使用的图像。
3、预处理输入
将图像宽度调整为500像素,然后将图像转换成灰度图像,因为canny边缘检测函数只适用于灰度图像。最后,调用bilateralFilter函数以降低图像噪声。 original_image = imutils.resize(original_image, width=500 ) gray_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY) gray_image = cv2.bilateralFilter(gray_image, 11, 17, 17)
4、在输入端检测车牌
检测车牌是确定汽车上有车牌字符的那部分的过程。
(1)执行边缘检测
先调用cv2.Canny函数,该函数可自动检测预处理图像上的边缘。 edged_image = cv2.Canny(gray_image, 30,200)
我们将通过这些边缘找到轮廓。
(2)寻找轮廓
调用cv2.findContours函数,并传递边缘图像的副本。这个函数将检测轮廓。使用cv2.drawContours函数,绘制原始图像上已检测的轮廓。最后,输出所有可见轮廓已绘制的原始图像。 contours, new = cv2.findContours(edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) img1 = original_image.copy() cv2.drawContours(img1, contours, -1, (0, 255, 0), 3) cv2.imshow("img1", img1)
该程序绘制它在汽车图像上找到的所有轮廓。
找到轮廓后,您需要对它们进行筛选,以确定最佳候选轮廓。
(3)筛选轮廓
根据最小面积30对轮廓进行筛选。忽略小于这个面积的轮廓,因为它们不太可能是车牌轮廓。复制原始图像,在图像上绘制前30个轮廓。最后,显示图像。 contours = sorted(contours, key = cv2.contourArea, reverse = True)[:30] # stores the license plate contour screenCnt = None img2 = original_image.copy() # draws top 30 contours cv2.drawContours(img2, contours, -1, (0, 255, 0), 3) cv2.imshow("img2", img2)
现在轮廓数量比开始时要少。唯一绘制的轮廓是那些近似含有车牌的轮廓。
最后,您需要遍历已筛选的轮廓,确定哪一个是车牌。
(4)遍历前30个轮廓
创建遍历轮廓的for循环。寻找有四个角的轮廓,确定其周长和坐标。存储含有车牌的轮廓的图像。最后,在原始图像上绘制车牌轮廓并加以显示。 count = 0 idx = 7 for c in contours: # approximate the license plate contour contour_perimeter = cv2.arcLength(c, True) approx = cv2.approxPolyDP(c, 0.018 * contour_perimeter, True) # Look for contours with 4 corners if len(approx) == 4: screenCnt = approx # find the coordinates of the license plate contour x, y, w, h = cv2.boundingRect(c) new_img = original_image [ y: y + h, x: x + w] # stores the new image cv2.imwrite("./"+str(idx)+".png",new_img) idx += 1 break # draws the license plate contour on original image cv2.drawContours(original_image , [screenCnt], -1, (0, 255, 0), 3) cv2.imshow("detected license plate", original_image )
循环之后,程序已识别出含有车牌的那个轮廓。
5、识别检测到的车牌
识别车牌意味着读取已裁剪车牌图像上的字符。加载之前存储的车牌图像并显示它。然后,调用pytesseract.image_to_string函数,传递已裁剪的车牌图像。这个函数将图像中的字符转换成字符串。 # filename of the cropped license plate image cropped_License_Plate = "./7.png" cv2.imshow("cropped license plate", cv2.imread(cropped_License_Plate)) # converts the license plate characters to string text = pytesseract.image_to_string(cropped_License_Plate, lang="eng")
已裁剪的车牌如下所示。上面的字符将是您稍后在屏幕上输出的内容。
检测并识别车牌之后,您就可以显示输出了。
6、显示输出
这是最后一步。您将提取的文本输出到屏幕上。该文本含有车牌字符。 print("License plate is:", text) cv2.waitKey(0) cv2.destroyAllWindows()
程序的预期输出应该如下图所示:
车牌文本可以在终端上看到。 三、磨砺您的Python技能
用Python检测和识别车牌是一个有意思的项目。它有挑战性,所以应该会帮助您学到关于Python的更多知识。
说到编程,实际运用是掌握一门语言的关键。为了锻炼技能,您需要开发有意思的项目。
原文链接:
https://www.makeuseof.com/python-car-license-plates-detect-and-recognize/
世界上美女最多的国家,每一个都长相精致大长腿,却担心嫁不出去在全球,有些国家的美女是特别多的,只是本地人却不太在乎。(此处已添加小程序,请到今日头条客户端查看)要说欧洲东北部的一个地区,它叫拉脱维亚,这里是被全球认可的盛产美女的地方,要说这
定制式助听器隐蔽美观,老年人适合戴吗?当下流行的助听器款式有很多,有戴在耳背上的,有戴在耳道里的,我们习惯称前者为耳背式助听器(耳背机),称后者为定制式助听器(定制机)。(第二三行的四款机型为定制式助听器)定制机的体积
九多肉多支持大众创业实现共同富裕九多肉多历经26年的发展历程,不断壮大,目前已成为农业产业化国家重点龙头企业,品牌九多肉多荣获中国著名商标公司食品安全检测中心分别通过了CMA和CATL认证九多肉多酱卤文化园被认定
想要穿出优雅精致,选粗花呢就好!想要穿得优雅精致有品位,是很多人一直以来的时尚追求。粗花呢,就可以帮你轻松达成愿望噢!诞生于18世纪初的粗花呢,是一种图案精巧的织物。最早是用英国苏格兰当地耐寒的绵羊毛,通过染色纺
第一次来杭州,我不想再推荐你去西湖众所周知,因为有西湖的加持,杭州总是能轻而易举地被外地游客所喜爱,这其中也包括我。来杭州两年里,我经常去那边逛,看过日出也见过日落,它像极了我的灵魂休憩所,但就是因为不在市区住的缘
广州春节旅游热度全国前三,让人感到意外,这座低调城市魅力无穷天南地北大拜年春节长假,广州和成都上海联合霸榜旅游热度前三名,着实让很多人感到意外。为什么是广州,这里有什么好玩的地方,好像很少看到旅游方面的宣传啊?别说外地人,就连很多本地人也感
2023世界湿地日走进贵阳大美湿地2023世界湿地日走进贵阳大美湿地湿地是地球上独特的生态系统与森林海洋并称为全球三大生态系统珊瑚礁滩涂红树林湖泊河流河口沼泽水库池塘水稻田等都属于湿地湿地在抵御洪水调节径流控制污染
新中国在世界领先消灭的第一种传染病中国消灭天花瘟疫艰难历程的回忆(一)陈辉1960年中国消灭天花。1980年5月8日,世界卫生组织第33届大会正式宣布,人类已经消灭天花。中国比世界提前消灭天花瘟疫20年,这是共产党
三千年了,为何都是男方出彩礼?从经济学看要反过来了媒婆恐怕是当下最不好做的行业,以往每逢年节,都是媒婆生意的旺季,媒婆也积极抢收,做到颗粒归仓,她们头顶棉帽臂挎提包慢扭肥腰兜揣照片,说话带风,赚得鱼肉满屋。如今的媒婆和房地产公司员
印度佛教对中国文化有多大影响?印度佛教输入中国,不只是传播一种新的宗教,更是中国历史上第一次西学东渐的巨大潮流,是古代中国人历时千余年大规模地对于外来文化的吸纳,是人类文化交流史上的壮举。佛教在某种程度上改变了
中国新能源汽车闯关须加力创新毕舸张朝2022年,中国新能源汽车行业交出一系列高分答卷全年销量达688。7万辆,同比增长93。4,连续8年保持全球第一出口67。9万辆,同比增长1。2倍新车销量达到汽车新车总销量