電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>車牌檢測系統(tǒng)

車牌檢測系統(tǒng)

2022-12-13 | zip | 0.05 MB | 次下載 | 2積分

資料介紹

描述

print('Hello! Thanks for reading this project')

在這篇文章中,我將解釋車牌檢測系統(tǒng)。

你興奮嗎?好吧……讓我們開始吧。

要構(gòu)建這個項(xiàng)目,您需要 OpenCV 和 imutils。您可以使用此命令安裝它。

- 打開您的命令提示符并輸入。

pip install opencv-python

pip install imutils

為什么是imutils?

使用 OpenCV 以及 Python 2.7 和 Python 3 使基本圖像處理功能(如平移、旋轉(zhuǎn)、調(diào)整大小、骨架化、顯示 Matplotlib 圖像、排序輪廓、檢測邊緣等)更容易的一系列便利功能。

現(xiàn)在,我們已經(jīng)安裝了這個項(xiàng)目所需的包。讓我們開始建造吧。

1. Import packages. 在這里,我們正在導(dǎo)入 OpenCV 和 imutils。

import cv2
import imutils as im

2. Read Image file從特定文件夾。最好在源文件目錄下。

# specify the path 
input = 'car5.jpg'
image = cv2.imread(input)

3. Resizing輸入圖像,因?yàn)槊總€圖像都有不同的形狀。因此,調(diào)整大小使所有內(nèi)容都采用一種標(biāo)準(zhǔn)尺寸。

newwidth = 500
resize_image = im.resize(image, width=newwidth)

4. Color conversion

在這里,我們將輸入顏色(BGR)圖像轉(zhuǎn)換為灰度圖像。因?yàn)?a target='_blank' class='arckwlink_none'>canny邊緣檢測器輸入圖像應(yīng)該是單通道8位輸入圖像。

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

5. Image Smoothing

過濾可能是圖像處理中最基本的操作。高斯和中值濾波器傾向于模糊邊緣。所以我將應(yīng)用一個雙邊濾波器,它可以很好地減少不需要的噪聲,同時保持邊緣相當(dāng)清晰。但是,與大多數(shù)過濾器相比,它非常慢。

給定參數(shù)

src:1 或 3 通道圖像

d:過濾期間使用的每個像素鄰域的直徑。

sigmaColor:在顏色空間中過濾 sigma。

sigmaSpace:在坐標(biāo)空間中過濾sigma。

為簡單起見,您可以將 2 個 sigma 值設(shè)置為相同。如果它們很?。? 10),則濾鏡不會有太大的效果,而如果它們很大(> 150),它們會產(chǎn)生非常強(qiáng)烈的效果,使圖像看起來“卡通”??。

欲了解更多信息https ://docs.opencv.org/trunk/d4/d86/group__imgproc__filter.html#ga9d7064d478c95d60003cf839430737ed

d, sigmaColor, sigmaSpace = 10,15,15
filtered_img = cv2.bilateralFilter(gray, d, sigmaColor, sigmaSpace)

6. Edge Detection

Canny Edge Detection 是一種流行的邊緣檢測算法。第一個參數(shù)是我們的輸入圖像。第二個和第三個參數(shù)分別是我們的下限和上限。

好的!什么是下限和上限?

Canny 使用兩個閾值(上限和下限)

  • 如果像素梯度大于上限閾值,則接受像素作為邊緣。
  • 如果像素梯度低于較低值,則將其拒絕。
  • 如果像素梯度在兩個閾值之間,那么只有當(dāng)它連接到高于閾值上限的像素時才會被接受。

?

poYBAGOX03-AVlSaAAAggM_Ft6w460.png
資料來源:Opencv 文檔
?

?

# Find Edges in the grayscale image
lower, upper = 170, 200
edged = cv2.Canny(filtered_img, lower, upper)

?

poYBAGOX04OAEtMbAAD-cln5rDw949.png
精明的邊緣檢測
?

7. Contours

輪廓被定義為連接沿圖像邊界具有相同強(qiáng)度的所有點(diǎn)的線。輪廓用于形狀分析和對象檢測。輪廓適用于二值圖像。在此處閱讀有關(guān)此內(nèi)容的更多信息。

cnts,hir = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

它將返回圖像中所有輪廓的 Python 列表。每個輪廓都是對象的 (x, y) 坐標(biāo)的 numpy 數(shù)組。像這樣

[[[218 353]]

 [[219 376]]

 [[331 375]]

 [[328 352]]]

它將返回這么多輪廓坐標(biāo)。所以,我們必須根據(jù)它的面積來整理列表。python 中的 sorted 函數(shù)在這里很有用。

參數(shù):

  • 可迭代 - 輪廓列表
  • 可以提供 key 函數(shù)來自定義排序順序,我們將使用區(qū)域進(jìn)行排序。
  • 對于降序列??表,可以將反向標(biāo)志設(shè)置為 true。
# Return list with 10 biggest contour area
cnts=sorted(cnts, key = cv2.contourArea, reverse = True)[:10]

print("Number of Contours found : " + str(len(cnts))) # 10

8. Number plate Detection

最后,我們有大面積的輪廓及其坐標(biāo)。

循環(huán)遍歷我們的輪廓以找到車牌的最佳輪廓。

好的!現(xiàn)在我們將把循環(huán)內(nèi)部發(fā)生的事情分解成碎片。

count = 0
for c in cnts:
        perimeter = cv2.arcLength(c, True)
        epsilon = 0.01 * perimeter
        approx = cv2.approxPolyDP(c, epsilon , True)
        if len(approx) == 4:  # Select the contour with 4 corners
            print(approx)
            NumberPlateCnt = approx #This is our approx Number Plate Contour
            break

首先,我們必須找到周長。它也稱為弧長。

周長是二維形狀周圍的距離。

第一個參數(shù)是輪廓點(diǎn),True 指定形狀是否為閉合輪廓。

perimeter = cv2.arcLength(c,True)

接下來,輪廓逼近

說明來源:OpenCV Documentation要理解這個,假設(shè)你試圖在圖像中找到一個正方形,但是由于圖像中的一些問題,你沒有得到一個完美的正方形,而是一個“壞形狀”(如第一下圖)。現(xiàn)在您可以使用此函數(shù)來近似形狀。在此,第二個參數(shù)稱為epsilon,它是從輪廓到近似輪廓的最大距離。它是一個精度參數(shù)。需要明智地選擇epsilon以獲得正確的輸出。

epsilon = 0.01 * perimeter
approx = cv2.approxPolyDP(c, epsilon , True)

最后,選擇具有 4 個角的輪廓。

if len(approx) == 4:  # Select the contour with 4 corners
      print(approx)
      NumberPlateCnt = approx #This is our approx Number Plate Contour
      break

9. Draw Contours

# Draw all contours
# -1 signifies drawing all contours
cv2.drawContours(image, [NumberPlateCnt], -1, (255,0,0), 2)
大多數(shù)讀者都沒有讀完博客,但你做到了,因?yàn)槟愫芴貏e,你不只是放棄閱讀。

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1XL4015+LM358恒壓恒流電路圖
  2. 0.38 MB   |  137次下載  |  1 積分
  3. 2elmo直線電機(jī)驅(qū)動調(diào)試細(xì)則
  4. 4.76 MB   |  9次下載  |  6 積分
  5. 3PCB布線和布局電路設(shè)計規(guī)則
  6. 0.40 MB   |  3次下載  |  免費(fèi)
  7. 4ADL-GPIB IEEE 488命令集函數(shù)參考手冊
  8. 0.67 MB   |  2次下載  |  5 積分
  9. 5DTSD1352導(dǎo)軌式多功能電能表安裝使用說明書 V2.15
  10. 1.19 MB   |  1次下載  |  免費(fèi)
  11. 6BQ79616-Q1和BQ75614-Q1 GUI用戶指南
  12. 4.51MB   |  1次下載  |  免費(fèi)
  13. 7TPS6287B25降壓轉(zhuǎn)換器評估模塊
  14. 3.46MB   |  1次下載  |  免費(fèi)
  15. 8INA226EVM用戶指南
  16. 4.7MB   |  1次下載  |  免費(fèi)

本月

  1. 1XL4015+LM358恒壓恒流電路圖
  2. 0.38 MB   |  137次下載  |  1 積分
  3. 2新概念模擬電路第四冊信號處理電路電子書免費(fèi)下載
  4. 10.69 MB  |  60次下載  |  免費(fèi)
  5. 3800VA純正弦波逆變器的參考設(shè)計
  6. 2.96MB   |  34次下載  |  免費(fèi)
  7. 4純電動汽?的主要部件及?作原理
  8. 5.76 MB   |  15次下載  |  5 積分
  9. 5JESD79-5C_v1.30-2024 內(nèi)存技術(shù)規(guī)范
  10. 2.71 MB   |  10次下載  |  免費(fèi)
  11. 6elmo直線電機(jī)驅(qū)動調(diào)試細(xì)則
  12. 4.76 MB   |  9次下載  |  6 積分
  13. 7明偉電源模塊RSP-3000圖紙
  14. 0.30 MB   |  8次下載  |  免費(fèi)
  15. 8使用BQ76PL102系列電量計進(jìn)行BQ78PL114的快速入門指南
  16. 4.04MB   |  7次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935115次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191366次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73805次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分