当前位置:   article > 正文

Opencv识别车牌_opencv车牌识别

opencv车牌识别

Opencv识别车牌

#encoding:utf8
import cv2
import numpy as np
Min_Area = 50
#定位车牌
def color_position(img,output_path):
colors = [#([26,43,46], [34,255,255]), # 黄色
([100,43,46], [124,255,255]), # 蓝色
([35, 43, 46], [77, 255, 255]) # 绿色
]
hsv =cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
for (lower, upper) in colors:
lower = np.array(lower, dtype=“uint8”) # 颜色下限
upper = np.array(upper, dtype=“uint8”) # 颜色上限

    # 根据阈值找到对应的颜色
    mask = cv2.inRange(hsv, lowerb=lower, upperb=upper)
    cv2.imshow("mask", mask)
    cv2.waitKey(0)        
    output = cv2.bitwise_and(img, img, mask=mask)
    cv2.imshow("output", output)
    cv2.waitKey(0)         
    k = mark_zone_color(output,output_path)
    if k==1:
        return 1
    # 展示图片
    #cv2.imshow("image", img)
    #cv2.imshow("image-color", output)
    #cv2.waitKey(0)
return 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

def mark_zone_color(src_img,output_img):
#根据颜色在原始图像上标记
#转灰度
gray = cv2.cvtColor(src_img,cv2.COLOR_BGR2GRAY)
cv2.imshow(“gray”, gray)
cv2.waitKey(0)
#图像二值化
#ret,binary_OTSU = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
ret,binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY)
cv2.imshow(“binary”, binary)

cv2.waitKey(0)     
#轮廓检测
contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)   
drawing = img.copy()
if len(contours)>0:
    cv2.drawContours(drawing, contours, -1, (0, 0, 255), 3) # 填充轮廓颜色
    cv2.imshow('drawing', drawing)
    cv2.waitKey(0)
#print(contours)

temp_contours = [] # 存储合理的轮廓
car_plates=[]
if len(contours)>0:
    for contour in contours:
        if cv2.contourArea(contour) > Min_Area:
            temp_contours.append(contour)
        car_plates = []
        for temp_contour in temp_contours:
            rect_tupple = cv2.minAreaRect(temp_contour)
            rect_width, rect_height = rect_tupple[1]
            if rect_width < rect_height:
                rect_width, rect_height = rect_height, rect_width
            aspect_ratio = rect_width / rect_height
            # 车牌正常情况下宽高比在2 - 5.5之间
            if aspect_ratio > 2 and aspect_ratio < 5.5:
                car_plates.append(temp_contour)
                #rect_vertices = cv2.boxPoints(rect_tupple)
                #rect_vertices = np.int0(rect_vertices)
        if len(car_plates)==1:
            #oldimg = cv2.drawContours(img, [rect_vertices], -1, (0, 0, 255), 2)
            #cv2.imshow("che pai ding wei", oldimg)
            #print(rect_tupple)
            break

#把车牌号所在的位置截取出来
if len(car_plates)==1:
    # 方法1 利用轮廓的坐标点来获取左上角 右下角的坐标
    #for car_plate in car_plates:
        ## 左上角的坐标
        #row_min,col_min = np.min(car_plate[:,0,:],axis=0)
        ## 右下角的坐标
        #row_max,col_max = np.max(car_plate[:,0,:],axis=0)
        #cv2.rectangle(img,(row_min,col_min),(row_max,col_max),(0,255,0),2)
        #card_img = img[col_min:col_max,row_min:row_max,:]
        #cv2.imshow("img",img)
    # 方法2,利用外接矩形来定位
    x,y,w,h = cv2.boundingRect(car_plates[0])
    cv2.rectangle(img,(x,y),(x+w, y+h),(0,255,0),2)
    cv2.imshow("img",img)
    cv2.waitKey(0)
    card_img = img[y:y+h,x:x+w,:]
    cv2.imwrite('card_img.jpg',card_img)
    cv2.imshow("card_img.",card_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    return 1
return 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

if name == “main”:
img = cv2.imread(‘…\Opencv-6-datas\cartest.png’)
color_position(img, ‘’)
在这里插入图片描述

#encoding:utf8
import  cv2
import numpy as np
Min_Area = 50
#定位车牌
def color_position(img,output_path):
    colors = [#([26,43,46], [34,255,255]), # 黄色
           ([100,43,46], [124,255,255]), # 蓝色
    ([35, 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/611905
推荐阅读
相关标签
  

闽ICP备14008679号