資源簡介
花了十天時(shí)間零基礎(chǔ)學(xué)習(xí)了opencv,并做了一個(gè)車牌檢測與識(shí)別的設(shè)計(jì),效果不錯(cuò),與大家分享一下。源代碼,原圖片,tessert-OCR安裝包以及OCR的中文包都在這里面
代碼片段和文件信息
#?車牌識(shí)別
import?cv2?as?cv
import?numpy?as?np
import?pytesseract?as?tess
from?PIL?import?Image
def?license_prepation(image):
????image_hsv?=?cv.cvtColor(image?cv.COLOR_BGR2HSV)??#?將圖像轉(zhuǎn)換為hsv色彩空間
????low_hsv?=?np.array([108?43?46])??#?設(shè)置顏色
????high_hsv?=?np.array([124?255?255])
????mask?=?cv.inRange(image_hsv?lowerb=low_hsv?upperb=high_hsv)??#?cv.inrange?函數(shù)用來追蹤image
????image_dst?=?cv.bitwise_and(image?image?mask=mask)??#?取frame與mask中不為0的相與,mask=mask必須有
????#?cv.imshow(‘license_dst‘?image_dst)
????image_blur?=?cv.GaussianBlur(image_dst?(7?7)?0)
????#?cv.imshow(‘license_blur‘image_blur)
????image_gray?=?cv.cvtColor(image_blur?cv.COLOR_BGR2GRAY)
????ret?binary?=?cv.threshold(image_gray?0?255?cv.THRESH_BINARY?|?cv.THRESH_OTSU)
????#?cv.imshow(‘binary‘?binary)
????kernel1?=?cv.getStructuringElement(cv.MORPH_RECT?(4?6))
????image_opened?=?cv.morphologyEx(binary?cv.MORPH_OPEN?kernel1)
????#?cv.imshow(‘license_opened‘?image_opened)
????kernel2?=?cv.getStructuringElement(cv.MORPH_RECT?(7?7))
????image_closed?=?cv.morphologyEx(image_opened?cv.MORPH_CLOSE?kernel2)
????#?cv.imshow(‘license_closed‘?image_closed)
????return?image_closed
def?choose_license_area(contours?Min_Area):
????temp_contours?=?[]
????for?contour?in?contours:
????????if?cv.contourArea(contour)?>?Min_Area:??#?面積大于MIN_AREA的區(qū)域保留
????????????temp_contours.append(contour)
????license_area?=?[]
????for?temp_contour?in?temp_contours:
????????rect_tupple?=?cv.minAreaRect(temp_contour)
????????#?print(rect_tupple)
????????rect_width?rect_height?=?rect_tupple[1]??#?0為中心點(diǎn),1為長和寬,2為角度
????????if?rect_width?????????????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:
????????????license_area.append(temp_contour)
????????????rect_vertices?=?cv.boxPoints(rect_tupple)
????????????rect_vertices?=?np.int0(rect_vertices)
????return?license_area
def?license_segment(license_area):
????if?(len(license_area))?==?1:
????????for?car_plate?in?license_area:
????????????#?print(car_plate.shape)
????????????#?print(car_plate)
????????????row_min?col_min?=?np.min(car_plate[:?0?:]?axis=0)??#?行是row?列是col
????????????row_max?col_max?=?np.max(car_plate[:?0?:]?axis=0)
????????????#?cv.rectangle(license?(row_min?col_min)?(row_max?col_max)?(0?255?0)2)
????????????card_img?=?license[col_min:col_max?row_min:row_max?:]
????????????#?cv.imshow(“card_img“?card_img)
????????????cv.imwrite(“card_img.jpg“?card_img)
????return?card_img
def?recognize_text(image):
????gray?=?cv.cvtColor(image?cv.COLOR_BGR2GRAY)
????ret?binary?=?cv.threshold(gray?120?255?cv.THRESH_BINARY_INV)
????cv.imshow(‘bin‘?binary)??#?白底黑字
????bin1?=?cv.resize(binary?(370?82))
????kernel1?=?cv.getStructuringElement(cv.MORPH_RECT?(2?5))
????dilated?=?cv.dilate(bin1?kernel1)??#?白色膨脹
????te
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???52662579??2020-09-25?10:19??CSDN\chi_sim.traineddata
?????文件???????3951??2020-09-25?13:11??CSDN\license?recognition_2.py
?????文件????5549925??2020-09-23?14:33??CSDN\license.png
?????文件???42424562??2020-09-22?19:21??CSDN\tesseract-ocr-setup-4.00.00dev.exe
?????目錄??????????0??2020-09-29?13:41??CSDN
-----------?---------??----------?-----??----
????????????100641017????????????????????5
評論
共有 條評論