车牌辨认是一种图画处理技术,用于辨认不同车辆。这项技术被广泛用于各种安全检测中。现在让我一同依据OpenCV编写Python代码来完结这一任务。
车牌辨认的相关过程
1.车牌检测: 第一步是从轿车上检测车牌地点方位。咱们将运用OpenCV中矩形的概括检测来寻觅车牌。假如咱们知道车牌的切当尺寸,色彩和大致方位,则能够进步准确性。一般,也会将依据摄像机的方位和该特定国家/区域所运用的车牌类型来训练检测算法。但是图画可能并没有轿字符间距加宽2磅怎么设置车的存在,在这种情人工智能能否取代人类况下咱们将先进行轿车的,然后是车牌。
2.字变量名符切割: 检测到车牌后,咱们必须将其裁剪并保变量与函数存为新图画。相人工智能概念股同,这能够运用OpenCV来完结。
3. 字符辨认: 现在,咱们在上一步中取笔记本电脑得的新图画肯定字符串是什么意思能够写上一些字符(数字/字母)。因而,咱们能够对其履行OCR(光学字符辨认)以检测数windows10激活密钥字。
1.字符车牌检测
让咱们以轿车的样本图画为例,首要检测该轿车上的车牌。然后,咱们还将运用相同的图画进行字符切割和字符辨认。
在次运笔记本电脑性价比排行2020用的测验图windows7怎么重装系统画如下所示。
图片来历链接:https : //rb.gy/lxmiuv
第1步:人工智能技术应用 将图画调整为所需巨细,然后将其灰度。相同的代码如下
img = cv2.resize(img, (620,480) )gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #convert to grey scale
调整巨细后,能够防止运用较大分变量值辨率的图画而出现变量与函数的以下问题,但是咱们要保证在调整巨细后,车号牌仍保留在框架中。在处理图画时假如不再需求处理色彩细节,那么灰度变化就必不可少,这加快了其他后续处理的速度。完结此过程后,图画将像这样被转化
过程2: 每张图片都会包括有用和无用的信息,在这种情况下,关于咱们来说,只有车牌是有用的字符常量信息,笔记本电脑排名前十其余的关于咱们的程序简直是无用人工智能al女神古力娜扎的。这种无用的信息称为噪声。一般,运用双方滤波(含糊)会从图画中删除不需求的细节。
gray = cv2.bilateralFilter(gray, 13, 15, 15)
语法为 destination_image = cv2.bilateralFilter(source_image, diameter of pixel, sigmaColor, sigm笔记本显卡天梯图aSpace)。咱们也能够将sigma色彩和sigma空间从15增加到windows7旗舰版更高的值,以含糊掉更多的布景信息,但请注意不要使有用的部分含糊。输出图画如下所示能够看到该图画中的布景细节(树木和建筑物)含糊了。这样,咱们能够防止程序处理这些区域。
过程3: 下一步是咱们履行边际检测的风趣过程。有很多办法能够做到,最简单和流行的办法是运用OpenCV中的cann变量类型有哪些y edge办法。 履行相同操作的行如下所示
edged = cv2.Canny(gray, 30, 200) #Perform Edge detection
语法为destination_image = cv2.Canny(source_image,人工智能的定义thresholdValue 1,thresholdValue 2)。 阈值谷1和阈值2是最小和最大阈值Windows。仅显示强度梯度大于最小阈值且小于最大阈值的边际。成果图画如下所示
过程4: 现在咱们能够开始在图画上寻觅概括
contours=cv2.findContours(edged.copy(),cv2.RETR_TREE,
一旦检测到计数字符是什么器,咱们就将它们从大到小进行排序, 并只考虑前10个成果而忽略其他成果。在咱们的图画中,计数器能人工智能是什么够是具有闭合外表的任何事物,但是在一切取得的成果中,车牌号码也将存在,因为它也是闭合外表。
为了字符型变量过滤取得的成果中的车牌图画,咱们将遍历一切成果,并检查其具有四个旁边面和闭合图形的矩形概括。因为车牌肯定是笔记本电脑什么牌子好四边形的矩笔记本电脑性价比排行2020形。
for c in cnts: # approximate the contour peri = cv2.arcLength(c, True) approx = cv2.appr
找到正确的计数器后,咱们将其保存在名为screenCnt的变量中,然后在其周围制作一个矩形框,以保证咱们已正确检测到车牌。
过程5: 现在咱们知道车牌人工智能概念股在哪里,剩余的信息对咱们来说简直没有用。因而,咱们能够对整个图片进行遮罩,除了车牌地点的当地。 相同的代码如下所示
# Masking the part other than the number platemask = np.zeros(gray.shape,np.uint8)new_image = cv
被遮罩的新图画将如下所示
2.字符切割
车牌辨认的下一步是经过裁剪车牌windows更新有必要吗并将其保存为新图画,将车牌从图画中切割出来 。 然后字符间距怎么加宽,咱们能够运用此图画来检测其间的字符。下面显示了从主图画裁剪出ROI(感兴趣区域)图画的代码变量泵
# Now crop(x, y) = np.where(mask == 255)(topx, topy) = (np.min(x), np.min(y))(bottomx, bottomy) =
成果变量名图画如下windows7怎么重装系统所示。一般添加到裁剪图画中,假如人工智能的定义需求,咱们还能够对其进行灰色处理和边笔记本电脑开不了机际化。这样做是为了改进下一步的字符辨认。但是我发现即便运变量名的命名规则用原始图画也能够正常作业。
3变量英语.字符辨认
该车牌辨认的最终一步是从切割的图画中实践读取车牌信息。就字符型变量像前面的教程一样,咱们将运用pytesseract包从图画读取字符。相同的代码如下
#Read the number platetext = pytesseract.image_to_string(Cropped, config='--psm 11')print("Detec
原始图笔记本画上印有数字“ CZ20FSE”,而且咱们的程序检测到它在jupyter笔记本上打印了变量英语相同的值。
车牌辨认失利案例
车牌辨认的完整代码,其间包括程序和咱们用来检查程序的测验图画。要记住,此办法的成果将不准确 。准确度取决于图画的windows7怎么重装系统清晰度,方向,曝光字符间距加宽2磅等。为了取得Windows更好的成果,您能够测验同变量英语时完成机器学习算法。
这个案例中咱们的程序能够正确检测车牌并进行裁剪。但是,Tesseract库无法正确辨认字符。OC人工智能最好五所大学R已将其辨认为“ MH13CD 0036”,而不是实践的“ MH 13 CD 0096”。人工智能最好五所大学经过运用更好的方向图画或装备变量值Tesseract引擎,能够纠正此类问题。
其他成功的例子
大多数时候,图画质量和方向都是正确的,程序能够辨认车牌并从中读取编号。下面的快照显示了取得的成功字符是什么成果。
完整代码
#@programming_feverimport cv2import imutilsimport numpy as npimport pytesseractpytesseract.pytesseract.tesseract_cmd = r'C:Program Files (x86)Tesseract-OCRtesseract.exe'
img = cv2.imread('D://skoda1.jpg',cv2.IMREAD_COLOR)img = cv2.resize(img, (600,400) )
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.bilateralFilter(gray, 13, 15, 15)
edged = cv2.Canny(gray, 30, 200) contours = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)contours = imutils.grab_contours(contours)contours = sorted(contours, key = cv2.contourArea, reverse = True)[:10]screenCnt = None
for c in contours: peri = cv2.arcLength(c, True) approx = cv2.approxPolyDP(c, 0.018 * peri, True) if len(approx) == 4: screenCnt = approx break
if screenCnt is None: detected = 0 print ("No contour detected")else: detected = 1
if detected == 1: cv2.drawContours(img, [screenCnt], -1, (0, 0, 255), 3)
mask = np.zeros(gray.shape,np.uint8)new_image = cv2.drawContours(mask,[screenCnt],0,255,-1,)new_image = cv2.bitwise_and(img,img,mask=mask)
(x, y) = np.where(mask == 255)(topx, topy) = (np.min(x), np.min(y))(bottomx, bottomy) = (np.max(x), np.max(y))Cropped = gray[topx:bottomx+1, topy:bottomy+1]
text = pytesseract.image_to_string(Cropped, config='--psm 11')print("programming_fever's License Plate Recognitionn")print("Detected license plate Number is:",text)img = cv2.resize(img,(500,300))Cropped = cv2.resize(Cropped,(400,200))cv2.imshow('car',img)cv2.imshow('Cropped',Cropped)
cv2.waitKey(0)cv2.destroyAllWindows()
写在最终:
欢迎有兴趣的同学私信交流,不定期会共享一些人工智能,教育视频、项目是实战、经典案例等共享给大家~
假如需求材料能够重视大众号:**【咕泡AI】回复:168 **