国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽

這篇具有很好參考價值的文章主要介紹了python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 前言

?? 優(yōu)質競賽項目系列,今天要分享的是

?? 基于python 機器視覺 的車牌識別系統(tǒng)

??學長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數:3分
  • 工作量:3分
  • 創(chuàng)新點:3分

?? 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate文章來源地址http://www.zghlxwxcb.cn/news/detail-739377.html

1 課題背景

車牌識別其實是個經典的機器視覺任務了,通過圖像處理技術檢測、定位、識別車牌上的字符,實現(xiàn)計算機對車牌的智能管理功能。如今在小區(qū)停車場、高速公路出入口、監(jiān)控場所、自動收費站等地都有車牌識別系統(tǒng)的存在,車牌識別的研究也已逐步成熟。盡管該技術隨處可見了,但其實在精度和識別速度上還需要進一步提升,自己動手實現(xiàn)一個車牌識別系統(tǒng)有利于學習和理解圖像處理的先進技術。

本文詳細介紹基于深度學習的中文車牌識別與管理系統(tǒng),在介紹算法原理的同時,給出Python的實現(xiàn)代碼以及PyQt的簡單UI界面。在界面中可以選擇需要識別的車牌視頻、圖片文件等。

2 效果演示

首先還是用動圖先展示一下效果,系統(tǒng)主要實現(xiàn)的功能是對圖片、視頻中的車牌進行檢測和識別,演示效果如下。

2.1 圖片檢測識別

python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽,python,java

2.2視頻檢測識別

python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽,python,java

3 車牌檢測與識別

目前,智能交通系統(tǒng)中集成運用計算機視覺、物聯(lián)網、人工智能等多種技術成為未來發(fā)展方向。其中,車牌識別(License Plate Recognition,
LPR)技術作為一項重要技術,從獲取的圖像中提取目標車輛的車牌信息,成為完善智能交通管理運行的基礎。

由于本文介紹的是中文車牌,所以可以簡單了解一下國內汽車拍照的特點:字符數為七個,包括漢字、字母和數字。車牌顏色組合中,其中最常見的組合為普通小型汽車藍底白字和新能源汽車的漸變綠底黑字。

python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽,python,java

總結來說,車牌是一個有特點的圖像區(qū)域,幾種特征可以綜合起來確定車牌定位,所以之前就有利用車牌與周圍環(huán)境的差異的算法。目前常見的車牌定位算法有以下 4
種:基于顏色、紋理、邊緣信息的車牌定位算法和基于人工神經網絡的車牌定位算法。

如下圖所示,常規(guī)的步驟包括圖像采集、預處理、車牌定位、字符分割、字符識別、輸出結果。深度學習技術成熟之后,端到端的網絡模型使得這一過程變得簡單起來。從思想上來說,基于深度學習的車牌識別實現(xiàn)思路主要包括兩個部分:(1)車牌檢測定位;(2)車牌字符識別。

python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽,python,java

其中,車牌的檢測定位本質是一個特定的目標檢測任務,即通過算法框選出屬于車牌的位置坐標,以便將其與背景區(qū)分開來??梢哉J為檢測出的車牌位置才是我們的感興趣區(qū)域。好用的方法如Cascade
LBP,它是一種機器學習的方法,可以利用OpenCV訓練級聯(lián)分類器,依賴CPU進行計算,級聯(lián)分類器的方法對于常用場景效果比較好,檢測速度較快,曾經一度比較流行,但準確率一般。基于深度學習的檢測算法有Mobilene-
SSD、YOLO-v5等,利用大批量的標注數據進行訓練.

當ROI被檢測出來,如何對這一區(qū)域中的字符進行識別,這就涉及到采取的處理方式。第一種處理方式,首先利用一系列字符分割的算法將車牌中的字符逐個分開,然后基于深度學習進行字符分類,得到識別結果;第二種,區(qū)別于第一種先分割再分類的兩步走方式,利用端到端的CTC(
Connectionist Temporal Classification)網絡直接進行識別。

這里我們使用網上開源的HyperLPR中文車牌識別框架,首先導入OpenCV和hyperlpr,讀取一張車牌圖片調用架構中的車牌識別方法獲得結果,以下代碼來自官方的示例:

?

    #導入包
    from hyperlpr import *
    #導入OpenCV庫
    import cv2
    #讀入圖片
    image = cv2.imread("demo.jpg")
    #識別結果
    print(HyperLPR_plate_recognition(image))

?

以上代碼運行結果如下,可以看出該方法識別了車牌的車牌字符、置信度值、車牌位置坐標、圖片尺寸等結果。

python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽,python,java

這樣的結果還不夠直觀,我們寫一個函數將車牌的識別結果標注在圖片上,首先導入相關依賴包,其代碼如下:

?

    # 導入包
    from hyperlpr import *
    # 導入OpenCV庫
    import cv2 as cv
    from PIL import Image, ImageDraw, ImageFont
    import 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

?

此時運行以上代碼可以得到如下結果:

python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽,python,java

同理,識別視頻中的車牌也可以做類似的操作,不過我們需要先對視頻文件進行逐幀讀取,然后采用以上的方式在圖片中標識出車牌并顯示。

這部分代碼如下:

    
capture = cv.VideoCapture("./車牌檢測.mp4")  # 讀取視頻文件
fontC = ImageFont.truetype("./platech.ttf", 14, 0)  # 字體,用于標注圖片
?    

i = 1
while (True):
    ref, frame = capture.read()
    if ref:
        i = i + 1
        if i % 5 == 0:
            i = 0
            res_all = HyperLPR_plate_recognition(frame)  # 識別車牌
            if len(res_all) > 0:
                res, confi, axes = res_all[0]  # 獲取結果
                frame = drawRectBox(frame, axes, res, fontC)
            cv.imshow("num", frame)  # 顯示畫面

?        if cv.waitKey(1) & 0xFF == ord('q'):
?            break  # 退出
?    else:
?        break

?

以上代碼每5幀識別一次視頻中的車牌,將車牌的結果標注在畫面中進行實時顯示,運行結果的截圖如下所示:
python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽,python,java

車牌的識別部分代碼演示完畢,對此我們完成了圖片和視頻的識別,然而這些還是簡單的腳本呈現(xiàn)。為了方便更換圖片、視頻以及管理車牌,還需要設計文件選擇功能以及系統(tǒng)的UI界面。這部分代碼如下:

?

    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(800, 600)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.openimage = QtWidgets.QPushButton(self.centralwidget)
            self.openimage.setGeometry(QtCore.QRect(20, 40, 91, 51))
            self.openimage.setObjectName("openimage")
            self.showlabel = QtWidgets.QLabel(self.centralwidget)
            self.showlabel.setGeometry(QtCore.QRect(110, 10, 471, 441))
            self.showlabel.setObjectName("showlabel")
            self.LPRdetect = QtWidgets.QPushButton(self.centralwidget)
            self.LPRdetect.setGeometry(QtCore.QRect(20, 150, 81, 51))
            self.LPRdetect.setObjectName("LPRdetect")
            self.LPR_Rec = QtWidgets.QPushButton(self.centralwidget)
            self.LPR_Rec.setGeometry(QtCore.QRect(20, 292, 75, 31))
            self.LPR_Rec.setObjectName("LPR_Rec")
            self.lineEdit_result = QtWidgets.QLineEdit(self.centralwidget)
            self.lineEdit_result.setGeometry(QtCore.QRect(20, 400, 101, 41))
            self.lineEdit_result.setObjectName("lineEdit_result")
            self.openvideo = QtWidgets.QPushButton(self.centralwidget)
            self.openvideo.setGeometry(QtCore.QRect(20, 360, 75, 23))
            self.openvideo.setObjectName("openvideo")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
            self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.openimage.setText(_translate("MainWindow", "打開圖片"))
        self.showlabel.setText(_translate("MainWindow", "TextLabel"))
        self.LPRdetect.setText(_translate("MainWindow", "車牌檢測"))
        self.LPR_Rec.setText(_translate("MainWindow", "車牌識別"))
        self.openvideo.setText(_translate("MainWindow", "PushButton"))

?

4 HyperLPR庫

4.1 簡介

HyperLPR是一個使用深度學習針對對中文車牌識別的實現(xiàn),與較為流行的開源的EasyPR相比,它的檢測速度和魯棒性和多場景的適應性都要好于目前開源的EasyPR,HyperLPR可以識別多種中文車牌包括白牌,新能源車牌,使館車牌,教練車牌,武警車牌等。

4.2 特點

  • 基于端到端sequence模型,無需進行字符分割,識別速度更快。
  • 速度快 720p ,單核 Intel 2.2G CPU (macbook Pro 2015)平均識別時間<=90ms
  • 識別率高,僅僅針對車牌ROI在EasyPR數據集上,0-error達到 95.2%, 1-error識別率達到 97.4% (指在定位成功后的車牌識別率)
  • 輕量總代碼量不超1k行。
  • 帶有Android實現(xiàn),其Android Demo可解決一些在一些普通業(yè)務場景(如執(zhí)法記錄儀)下的車牌識別任務。
  • 支持多種車牌的識別,詳情見如下

4.3 HyperLPR的檢測流程

  • 使用opencv的HAAR Cascade檢測車牌大致位置
  • Extend檢測到的大致位置的矩形區(qū)域
  • 使用類似于MSER的方式的多級二值化和RANSAC擬合車牌的上下邊界
  • 使用CNN Regression回歸車牌左右邊界
  • 使用基于紋理場的算法進行車牌校正傾斜
  • 使用CNN滑動窗切割字符
  • 使用CNN識別字符

4.4 安裝

?
? pip install hyperlpr

4.5 Python 依賴

  • Keras (>2.0.0)

  • Theano(>0.9) or Tensorflow(>1.1.x)

  • Numpy (>1.10)

  • Scipy (0.19.1)

  • OpenCV(>3.0)

  • Scikit-image (0.13.0)

  • PIL

  • 使用CNN識別字符

5 最后

?? 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

到了這里,關于python 機器視覺 車牌識別 - opencv 深度學習 機器學習 計算機競賽的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 挑戰(zhàn)杯 python 機器視覺 車牌識別 - opencv 深度學習 機器學習

    挑戰(zhàn)杯 python 機器視覺 車牌識別 - opencv 深度學習 機器學習

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 基于python 機器視覺 的車牌識別系統(tǒng) ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 車牌識別其實是個經典的機器視覺任務了,

    2024年02月21日
    瀏覽(29)
  • 機器視覺畢業(yè)設計 python車牌識別系統(tǒng) - opencv 深度學習 機器學習

    機器視覺畢業(yè)設計 python車牌識別系統(tǒng) - opencv 深度學習 機器學習

    # 1 前言 ?? 基于python 機器視覺 的車牌識別系統(tǒng) ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:2分 車牌識別其實是個經典的機器視覺任務了,通過圖像處理技術檢測、定位、識別車牌上的字符,實現(xiàn)計算機對車牌的智能管理功能。如今在

    2024年02月13日
    瀏覽(27)
  • 計算機競賽 深度學習 opencv python 公式識別(圖像識別 機器視覺)

    計算機競賽 深度學習 opencv python 公式識別(圖像識別 機器視覺)

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 基于深度學習的數學公式識別算法實現(xiàn) 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:4分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.com/d

    2024年02月07日
    瀏覽(19)
  • 計算機競賽 深度學習 機器視覺 人臉識別系統(tǒng) - opencv python

    計算機競賽 深度學習 機器視覺 人臉識別系統(tǒng) - opencv python

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 深度學習 機器視覺 人臉識別系統(tǒng) 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https://gitee.com/dancheng

    2024年02月07日
    瀏覽(103)
  • 計算機設計大賽 深度學習人臉表情識別算法 - opencv python 機器視覺

    計算機設計大賽 深度學習人臉表情識別算法 - opencv python 機器視覺

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 深度學習人臉表情識別系統(tǒng) 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/

    2024年02月21日
    瀏覽(570)
  • 計算機畢設 深度學習手勢識別 - yolo python opencv cnn 機器視覺

    計算機畢設 深度學習手勢識別 - yolo python opencv cnn 機器視覺

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年02月14日
    瀏覽(99)
  • 計算機競賽 題目:基于機器視覺opencv的手勢檢測 手勢識別 算法 - 深度學習 卷積神經網絡 opencv python

    計算機競賽 題目:基于機器視覺opencv的手勢檢測 手勢識別 算法 - 深度學習 卷積神經網絡 opencv python

    ?? 優(yōu)質競賽項目系列,今天要分享的是 基于機器視覺opencv的手勢檢測 手勢識別 算法 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 普通機器視覺手勢檢測的基本流程如下: 其中輪廓的提取,多邊形

    2024年02月07日
    瀏覽(96)
  • python+opencv+機器學習車牌識別 計算機競賽

    python+opencv+機器學習車牌識別 計算機競賽

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 基于機器學習的車牌識別系統(tǒng) ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:4分 工作量:4分 創(chuàng)新點:3分 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-seni

    2024年02月07日
    瀏覽(29)
  • 競賽項目 深度學習驗證碼識別 - 機器視覺 python opencv

    競賽項目 深度學習驗證碼識別 - 機器視覺 python opencv

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 深度學習驗證碼識別 - 機器視覺 python opencv 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.

    2024年02月13日
    瀏覽(31)
  • 計算機競賽 深度學習人體跌倒檢測 -yolo 機器視覺 opencv python

    計算機競賽 深度學習人體跌倒檢測 -yolo 機器視覺 opencv python

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? **基于深度學習的人體跌倒檢測算法研究與實現(xiàn) ** 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:5分 ?? 更多資料, 項目分享: https

    2024年02月08日
    瀏覽(105)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包