車號識別系統推薦 車號識別怎么弄( 二 )


個中,車牌的檢驗和測定定位實質是一個一定的目的檢驗和測定(Object Detection)工作,即經過算法框選定屬于車牌的場所坐標,再不將其與后臺辨別飛來 。不妨覺得檢驗和測定出的車牌場所才是咱們的感愛好地區(Region Of Interest, ROI) 。好用的本領如Cascade LBP,它是一種呆板進修的本領,不妨運用OPenCV演練級聯分門別類器,依附CPU舉行計劃,參考網址:https://gitee.com/zeusees/HyperLPR 。級聯分門別類器的本領對于常用途景功效比擬好,檢驗和測定速率較快,已經一番比擬時髦,但精確率普遍 。鑒于深度進修的檢驗和測定算法有Mobilene-SSD、YOLO-v5等,運用大量量的標明數據舉行演練,演練代碼不妨參考開源代碼https://github.com/zeusees/License-Plate-Detector 。
當ROI被檢驗和測定出來,怎樣對這一地區中的字符舉行辨別,這就波及到采用的處置辦法 。之一種處置辦法,開始運用一系列字符分隔的算法將車牌中的字符逐一劃分,而后鑒于深度進修舉行字符分門別類,獲得辨別截止,可參考的代碼地方:https://github.com/LCorleone/A-Simple-Chinese-License-Plate-Generator-and-Recognition-Framework;第二種,辨別于之一種先分隔再分門別類的兩步走辦法,運用端到端的CTC( Connectionist Temporal Classification)搜集徑直舉行辨別,代碼地方:https://github.com/armaab/hyperlpr-train 。
這邊咱們運用網上開源的HyperLPR華文車牌辨別框架,開始導出OpenCV和hyperlpr,讀取一張車牌圖片挪用框架結構中的車牌辨別本領贏得截止,以次代碼來自官方的示例:
#導出包from hyperlpr import *#導出OpenCV庫import cv2#讀入圖片image = cv2.imread("demo.jpg")#辨別截止print(HyperLPR_plate_recognition(image))之上代碼運轉截止如次,不妨看出該本領辨別了車牌的車牌字符、相信度值、車牌場所坐標、圖片尺寸等截止 。
如許的截止還不夠直覺,咱們寫一個因變量將車牌的辨別截止標明在圖片上,開始導出關系依附包,其代碼如次:
# 導出包from hyperlpr import *# 導出OpenCV庫import cv2 as cvfrom PIL import Image, ImageDraw, ImageFontimport numpy as np興建一個因變量drawRectBox,將圖像數據、辨別截止、字體等參數字傳送入,因變量里面運用OpenCV和PIL庫增添標明框和辨別截止的字符,其代碼如次:
def drawRectBox(image, rect, addText, fontC):cv.rectangle(image, (int(round(rect[0])), int(round(rect[1]))),(int(round(rect[2]) + 8), int(round(rect[3]) + 8)),(0, 0, 255), 2)cv.rectangle(image, (int(rect[0] - 1), int(rect[1]) - 16), (int(rect[0] + 75), int(rect[1])), (0, 0, 255), -1, cv.LINE_AA)img = Image.fromarray(image)draw = ImageDraw.Draw(img)draw.text((int(rect[0] + 1), int(rect[1] - 16)), addText, (255, 255, 255), font=fontC)imagex = np.array(img)return imagex咱們開始讀取圖片文獻,運用前方的HyperLPR_plate_recognition本領辨別出車牌截止,挪用之上因變量贏得帶標明框的圖片,運用OpenCV的imshow本領表露截止圖片,其代碼如次:
image = cv.imread('test3.jpeg')# 讀取采用的圖片res_all = HyperLPR_plate_recognition(image)fontC = ImageFont.truetype("./platech.ttf", 14, 0)res, confi, axes = res_all[0]image = drawRectBox(image, axes, res, fontC)cv.imshow('Stream', image)c = cv.waitKey(0) & 0xff此時運轉之上代碼不妨獲得如次截止:
同理,辨別視頻中的車牌也不妨做一致的操縱,然而咱們須要先目視頻文獻舉行逐幀讀取,而后沿用之上的辦法在圖片中標識出車牌并表露 。這局部代碼如次:
capture = cv.VideoCapture("./車牌檢驗和測定.mp4")# 讀取視頻文獻fontC = ImageFont.truetype("./platech.ttf", 14, 0)# 字體,用來標明圖片i = 1while (True):ref, frame

推薦閱讀