python利用opencv进行车牌号识别定位

import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread("G:\\IDLE\\timg.jpg")
img1=img[:,:,::-1]
hsv=cv2.cvtColor(img.copy(),cv2.COLOR_BGR2HSV)    #将图像转换成HSV格式
gau= cv2.GaussianBlur(img.copy(),(5,5),9)     #进行高斯滤波
lower=np.array([100,50,50])      #蓝色的下限
upper=np.array([140,255,255])   #蓝色的上限
mask=cv2.inRange(hsv,lower,upper)    #进行掩膜
res=cv2.bitwise_and(img.copy(),img.copy(),mask=mask)
gray= cv2.cvtColor(res,cv2.COLOR_BGR2GRAY)    #转为灰度图像
ret,binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)   #对灰度图像进行二值化处理
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 1))     #闭操作
closed = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)
contours,hierarchy = cv2.findContours(closed.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)   #寻找轮廓(只找外围轮廓)
draw_image=cv2.drawContours(img1.copy(),contours,-1,(255,0,0),10)     #画出轮廓
for i in range(len(contours)):
    x,y,w,h=cv2.boundingRect(contours[i])   
    ratio=w/h
    if ratio>2 and ratio<5.5:   #一般车牌的宽高比大于2小于5.5
        cv2.rectangle(draw_image,(x,y),(x+w,y+h),(0,255,0),15)
        chepai=draw_image[y:y+h,x:x+w]   #裁剪图像
plt.subplot(121)
plt.imshow(img1)
plt.title("The original license plate",fontsize=20)
plt.subplot(122)
plt.imshow(chepai)
plt.title("License plate cutting")
#plt.imshow(draw_image)
#plt.title("License plate location",fontsize=20)
plt.show()

结果如下所示:
在这里插入图片描述
在这里插入图片描述

发布了81 篇原创文章 · 获赞 22 · 访问量 7700

猜你喜欢

转载自blog.csdn.net/qq_38883271/article/details/103593951