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

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別

這篇具有很好參考價值的文章主要介紹了【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??CSDN小墨&曉末:https://blog.csdn.net/jd1813346972

???個人介紹: 研一|統(tǒng)計學|干貨分享
???????? 擅長Python、Matlab、R等主流編程軟件
???????? 累計十余項國家級比賽獎項,參與研究經(jīng)費10w、40w級橫向

該篇文章將以實戰(zhàn)形式演示利用Python結(jié)合Opencv實現(xiàn)車牌識別,全程涉及圖像預處理、車牌定位、車牌分割、通過模板匹配識別結(jié)果輸出。該項目對于智能交通、車輛管理等領(lǐng)域具有實際應(yīng)用價值。通過自動識別車牌號碼,可以實現(xiàn)車輛追蹤、違章查詢、停車場管理等功能,提高交通管理的效率和準確性??捎糜谲嚺谱R別技術(shù)學習。

技術(shù)要點:

  • OpenCV:用于圖像處理和計算機視覺任務(wù)。
  • Python:作為編程語言,具有簡單易學、資源豐富等優(yōu)點。
  • 圖像處理技術(shù):如灰度化、噪聲去除、邊緣檢測、形態(tài)學操作、透視變換等。

1 導入相關(guān)模塊

import cv2
from matplotlib import pyplot as plt
import os
import numpy as np
from PIL import ImageFont, ImageDraw, Image

2 相關(guān)功能函數(shù)定義

2.1 彩色圖片顯示函數(shù)(plt_show0)

def plt_show0(img):
    b,g,r = cv2.split(img)
    img = cv2.merge([r, g, b])
    plt.imshow(img)
    plt.show()

cv2與plt的圖像通道不同:cv2為[b,g,r];plt為[r, g, b]

2.2 灰度圖片顯示函數(shù)(plt_show)

def plt_show(img):
    plt.imshow(img,cmap='gray')
    plt.show()

2.3 圖像去噪函數(shù)(gray_guss)

def gray_guss(image):
    image = cv2.GaussianBlur(image, (3, 3), 0)
    gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
    return gray_image

此處演示使用高斯模糊去噪。

cv2.GaussianBlur參數(shù)說明:

  • src:輸入圖像,可以是任意數(shù)量的通道,這些通道可以獨立處理,但深度應(yīng)為 CV_8UCV_16U、CV_16S、CV_32FCV_64F
  • ksize:高斯核的大小,必須是正奇數(shù),例如 (3, 3)、(5, 5) 等。如果 ksize 的值為零,那么它會根據(jù) sigmaXsigmaY 的值來計算。
  • sigmaX:X 方向上的高斯核標準偏差。
  • dst:輸出圖像,大小和類型與 src 相同。
  • sigmaY:Y 方向上的高斯核標準偏差,如果 sigmaY 是零,那么它會與 sigmaX 的值相同。如果 sigmaY 是負數(shù),那么它會從 ksize.widthksize.height 計算得出。
  • borderType:像素外插法,有默認值。

2 圖像預處理

2.1 圖片讀取

origin_image = cv2.imread('D:/image/car3.jpg')

??此處演示識別車牌原圖:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

2.2 高斯去噪

origin_image = cv2.imread('D:/image/car3.jpg')
# 復制一張圖片,在復制圖上進行圖像操作,保留原圖
image = origin_image.copy()
gray_image = gray_guss(image)

2.3 邊緣檢測

Sobel_x = cv2.Sobel(gray_image, cv2.CV_16S, 1, 0)
absX = cv2.convertScaleAbs(Sobel_x)
image = absX

x方向上的邊緣檢測(增強邊緣信息)。

2.4 閾值化

# 圖像閾值化操作——獲得二值化圖
ret, image = cv2.threshold(image, 0, 255, cv2.THRESH_OTSU)
# 顯示灰度圖像
plt_show(image)

??運行結(jié)果:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

3 車牌定位

3.1 區(qū)域選擇

kernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (30, 10))
image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernelX,iterations = 1)
# 顯示灰度圖像
plt_show(image)

從圖像中提取對表達和描繪區(qū)域形狀有意義的圖像分量。

??運行結(jié)果:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

3.2 形態(tài)學操作

# 腐蝕(erode)和膨脹(dilate)
kernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (50, 1))
kernelY = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 20))
#x方向進行閉操作(抑制暗細節(jié))
image = cv2.dilate(image, kernelX)
image = cv2.erode(image, kernelX)
#y方向的開操作
image = cv2.erode(image, kernelY)
image = cv2.dilate(image, kernelY)
# 中值濾波(去噪)
image = cv2.medianBlur(image, 21)
# 顯示灰度圖像
plt_show(image)

使用膨脹和腐蝕操作來突出車牌區(qū)域。

?? 運行結(jié)果:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

3.3 輪廓檢測

contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for item in contours:
    rect = cv2.boundingRect(item)
    x = rect[0]
    y = rect[1]
    weight = rect[2]
    height = rect[3]
    # 根據(jù)輪廓的形狀特點,確定車牌的輪廓位置并截取圖像
    if (weight > (height * 3)) and (weight < (height * 4.5)):
        image = origin_image[y:y + height, x:x + weight]
        plt_show(image)

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

4 車牌字符分割

4.1 高斯去噪

# 圖像去噪灰度處理
gray_image = gray_guss(image)

4.2 閾值化

ret, image = cv2.threshold(gray_image, 0, 255, cv2.THRESH_OTSU)
plt_show(image)

??運行結(jié)果:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

4.3 膨脹操作

#膨脹操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 4))
image = cv2.dilate(image, kernel)
plt_show(image)

??運行結(jié)果:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

4.4 車牌號排序

words = sorted(words,key=lambda s:s[0],reverse=False)
i = 0
#word中存放輪廓的起始點和寬高
for word in words:
    # 篩選字符的輪廓
    if (word[3] > (word[2] * 1.5)) and (word[3] < (word[2] * 5.5)) and (word[2] > 10):
        i = i+1
        if word[2] < 15:
            splite_image = image[word[1]:word[1] + word[3], word[0]-word[2]:word[0] + word[2]*2]
        else:
            splite_image = image[word[1]:word[1] + word[3], word[0]:word[0] + word[2]]
        word_images.append(splite_image)
        print(i)
print(words)

??運行結(jié)果:

1
2
3
4
5
6
7
[[2, 0, 7, 70], [12, 6, 30, 55], [15, 7, 7, 9], [46, 6, 32, 55], [83, 30, 9, 9], [96, 7, 32, 55], [132, 8, 32, 55], [167, 8, 30, 54], [202, 62, 7, 6], [203, 7, 30, 55], [245, 7, 12, 54], [266, 0, 12, 70]]

4.5 分割效果

for i,j in enumerate(word_images):  
    plt.subplot(1,7,i+1)
    plt.imshow(word_images[i],cmap='gray')
plt.show()

??運行結(jié)果:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言

5 模板匹配

5.1 準備模板

# 準備模板(template[0-9]為數(shù)字模板;)
template = ['0','1','2','3','4','5','6','7','8','9',
            'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z',
            '藏','川','鄂','甘','贛','貴','桂','黑','滬','吉','冀','津','晉','京','遼','魯','蒙','閩','寧',
            '青','瓊','陜','蘇','皖','湘','新','渝','豫','粵','云','浙']

# 讀取一個文件夾下的所有圖片,輸入?yún)?shù)是文件名,返回模板文件地址列表
def read_directory(directory_name):
    referImg_list = []
    for filename in os.listdir(directory_name):
        referImg_list.append(directory_name + "/" + filename)
    return referImg_list

# 獲得中文模板列表(只匹配車牌的第一個字符)
def get_chinese_words_list():
    chinese_words_list = []
    for i in range(34,64):
        #將模板存放在字典中
        c_word = read_directory('D:/refer1/'+ template[i])
        chinese_words_list.append(c_word)
    return chinese_words_list
chinese_words_list = get_chinese_words_list()


# 獲得英文模板列表(只匹配車牌的第二個字符)
def get_eng_words_list():
    eng_words_list = []
    for i in range(10,34):
        e_word = read_directory('D:/refer1/'+ template[i])
        eng_words_list.append(e_word)
    return eng_words_list
eng_words_list = get_eng_words_list()


# 獲得英文和數(shù)字模板列表(匹配車牌后面的字符)
def get_eng_num_words_list():
    eng_num_words_list = []
    for i in range(0,34):
        word = read_directory('D:/refer1/'+ template[i])
        eng_num_words_list.append(word)
    return eng_num_words_list
eng_num_words_list = get_eng_num_words_list()

此處需提前準備各類字符模板。

5.2 匹配結(jié)果

# 獲得英文和數(shù)字模板列表(匹配車牌后面的字符)
def get_eng_num_words_list():
    eng_num_words_list = []
    for i in range(0,34):
        word = read_directory('D:/refer1/'+ template[i])
        eng_num_words_list.append(word)
    return eng_num_words_list
eng_num_words_list = get_eng_num_words_list()


# 讀取一個模板地址與圖片進行匹配,返回得分
def template_score(template,image):
    #將模板進行格式轉(zhuǎn)換
    template_img=cv2.imdecode(np.fromfile(template,dtype=np.uint8),1)
    template_img = cv2.cvtColor(template_img, cv2.COLOR_RGB2GRAY)
    #模板圖像閾值化處理——獲得黑白圖
    ret, template_img = cv2.threshold(template_img, 0, 255, cv2.THRESH_OTSU)
#     height, width = template_img.shape
#     image_ = image.copy()
#     image_ = cv2.resize(image_, (width, height))
    image_ = image.copy()
    #獲得待檢測圖片的尺寸
    height, width = image_.shape
    # 將模板resize至與圖像一樣大小
    template_img = cv2.resize(template_img, (width, height))
    # 模板匹配,返回匹配得分
    result = cv2.matchTemplate(image_, template_img, cv2.TM_CCOEFF)
    return result[0][0]


# 對分割得到的字符逐一匹配
def template_matching(word_images):
    results = []
    for index,word_image in enumerate(word_images):
        if index==0:
            best_score = []
            for chinese_words in chinese_words_list:
                score = []
                for chinese_word in chinese_words:
                    result = template_score(chinese_word,word_image)
                    score.append(result)
                best_score.append(max(score))
            i = best_score.index(max(best_score))
            # print(template[34+i])
            r = template[34+i]
            results.append(r)
            continue
        if index==1:
            best_score = []
            for eng_word_list in eng_words_list:
                score = []
                for eng_word in eng_word_list:
                    result = template_score(eng_word,word_image)
                    score.append(result)
                best_score.append(max(score))
            i = best_score.index(max(best_score))
            # print(template[10+i])
            r = template[10+i]
            results.append(r)
            continue
        else:
            best_score = []
            for eng_num_word_list in eng_num_words_list:
                score = []
                for eng_num_word in eng_num_word_list:
                    result = template_score(eng_num_word,word_image)
                    score.append(result)
                best_score.append(max(score))
            i = best_score.index(max(best_score))
            # print(template[i])
            r = template[i]
            results.append(r)
            continue
    return results


word_images_ = word_images.copy()
# 調(diào)用函數(shù)獲得結(jié)果
result = template_matching(word_images_)
print(result)
print( "".join(result))

??運行結(jié)果:

['渝', 'B', 'F', 'U', '8', '7', '1']
渝BFU871

“”.join(result)函數(shù)將列表轉(zhuǎn)換為拼接好的字符串,方便結(jié)果顯示

5.3 匹配效果展示

height,weight = origin_image.shape[0:2]
print(height)
print(weight)

image_1 = origin_image.copy()
cv2.rectangle(image_1, (int(0.2*weight), int(0.75*height)), (int(weight*0.9), int(height*0.95)), (0, 255, 0), 5)

#設(shè)置需要顯示的字體
fontpath = "font/simsun.ttc"
font = ImageFont.truetype(fontpath,64)
img_pil = Image.fromarray(image_1)
draw = ImageDraw.Draw(img_pil)
#繪制文字信息
draw.text((int(0.2*weight)+25, int(0.75*height)),  "".join(result), font = font, fill = (255, 255, 0))
bk_img = np.array(img_pil)
print(result)
print( "".join(result))
plt_show0(bk_img)

??運行結(jié)果:

【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別,Python編程,python,opencv,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-838648.html

6完整代碼

# 導入所需模塊
import cv2
from matplotlib import pyplot as plt
import os
import numpy as np
from PIL import ImageFont, ImageDraw, Image
# plt顯示彩色圖片
def plt_show0(img):
    b,g,r = cv2.split(img)
    img = cv2.merge([r, g, b])
    plt.imshow(img)
    plt.show()
    
# plt顯示灰度圖片
def plt_show(img):
    plt.imshow(img,cmap='gray')
    plt.show()
    
# 圖像去噪灰度處理
def gray_guss(image):
    image = cv2.GaussianBlur(image, (3, 3), 0)
    gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
    return gray_image

# 讀取待檢測圖片
origin_image = cv2.imread('D:/image/car3.jpg')
# 復制一張圖片,在復制圖上進行圖像操作,保留原圖
image = origin_image.copy()
# 圖像去噪灰度處理
gray_image = gray_guss(image)
# x方向上的邊緣檢測(增強邊緣信息)
Sobel_x = cv2.Sobel(gray_image, cv2.CV_16S, 1, 0)
absX = cv2.convertScaleAbs(Sobel_x)
image = absX

# 圖像閾值化操作——獲得二值化圖
ret, image = cv2.threshold(image, 0, 255, cv2.THRESH_OTSU)
# 顯示灰度圖像
plt_show(image)
# 形態(tài)學(從圖像中提取對表達和描繪區(qū)域形狀有意義的圖像分量)——閉操作
kernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (30, 10))
image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernelX,iterations = 1)
# 顯示灰度圖像
plt_show(image)


# 腐蝕(erode)和膨脹(dilate)
kernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (50, 1))
kernelY = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 20))
#x方向進行閉操作(抑制暗細節(jié))
image = cv2.dilate(image, kernelX)
image = cv2.erode(image, kernelX)
#y方向的開操作
image = cv2.erode(image, kernelY)
image = cv2.dilate(image, kernelY)
# 中值濾波(去噪)
image = cv2.medianBlur(image, 21)
# 顯示灰度圖像
plt_show(image)

# 獲得輪廓
contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for item in contours:
    rect = cv2.boundingRect(item)
    x = rect[0]
    y = rect[1]
    weight = rect[2]
    height = rect[3]
    # 根據(jù)輪廓的形狀特點,確定車牌的輪廓位置并截取圖像
    if (weight > (height * 3)) and (weight < (height * 4.5)):
        image = origin_image[y:y + height, x:x + weight]
        plt_show(image)


#車牌字符分割
# 圖像去噪灰度處理
gray_image = gray_guss(image)

# 圖像閾值化操作——獲得二值化圖   
ret, image = cv2.threshold(gray_image, 0, 255, cv2.THRESH_OTSU)
plt_show(image)

#膨脹操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 4))
image = cv2.dilate(image, kernel)
plt_show(image)


# 查找輪廓
contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
words = []
word_images = []
#對所有輪廓逐一操作
for item in contours:
    word = []
    rect = cv2.boundingRect(item)
    x = rect[0]
    y = rect[1]
    weight = rect[2]
    height = rect[3]
    word.append(x)
    word.append(y)
    word.append(weight)
    word.append(height)
    words.append(word)
# 排序,車牌號有順序。words是一個嵌套列表
words = sorted(words,key=lambda s:s[0],reverse=False)
i = 0
#word中存放輪廓的起始點和寬高
for word in words:
    # 篩選字符的輪廓
    if (word[3] > (word[2] * 1.5)) and (word[3] < (word[2] * 5.5)) and (word[2] > 10):
        i = i+1
        if word[2] < 15:
            splite_image = image[word[1]:word[1] + word[3], word[0]-word[2]:word[0] + word[2]*2]
        else:
            splite_image = image[word[1]:word[1] + word[3], word[0]:word[0] + word[2]]
        word_images.append(splite_image)
        print(i)
print(words)

for i,j in enumerate(word_images):  
    plt.subplot(1,7,i+1)
    plt.imshow(word_images[i],cmap='gray')
plt.show()

#模版匹配
# 準備模板(template[0-9]為數(shù)字模板;)
template = ['0','1','2','3','4','5','6','7','8','9',
            'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z',
            '藏','川','鄂','甘','贛','貴','桂','黑','滬','吉','冀','津','晉','京','遼','魯','蒙','閩','寧',
            '青','瓊','陜','蘇','皖','湘','新','渝','豫','粵','云','浙']

# 讀取一個文件夾下的所有圖片,輸入?yún)?shù)是文件名,返回模板文件地址列表
def read_directory(directory_name):
    referImg_list = []
    for filename in os.listdir(directory_name):
        referImg_list.append(directory_name + "/" + filename)
    return referImg_list

# 獲得中文模板列表(只匹配車牌的第一個字符)
def get_chinese_words_list():
    chinese_words_list = []
    for i in range(34,64):
        #將模板存放在字典中
        c_word = read_directory('D:/refer1/'+ template[i])
        chinese_words_list.append(c_word)
    return chinese_words_list
chinese_words_list = get_chinese_words_list()


# 獲得英文模板列表(只匹配車牌的第二個字符)
def get_eng_words_list():
    eng_words_list = []
    for i in range(10,34):
        e_word = read_directory('D:/refer1/'+ template[i])
        eng_words_list.append(e_word)
    return eng_words_list
eng_words_list = get_eng_words_list()


# 獲得英文和數(shù)字模板列表(匹配車牌后面的字符)
def get_eng_num_words_list():
    eng_num_words_list = []
    for i in range(0,34):
        word = read_directory('D:/refer1/'+ template[i])
        eng_num_words_list.append(word)
    return eng_num_words_list
eng_num_words_list = get_eng_num_words_list()


# 讀取一個模板地址與圖片進行匹配,返回得分
def template_score(template,image):
    #將模板進行格式轉(zhuǎn)換
    template_img=cv2.imdecode(np.fromfile(template,dtype=np.uint8),1)
    template_img = cv2.cvtColor(template_img, cv2.COLOR_RGB2GRAY)
    #模板圖像閾值化處理——獲得黑白圖
    ret, template_img = cv2.threshold(template_img, 0, 255, cv2.THRESH_OTSU)
#     height, width = template_img.shape
#     image_ = image.copy()
#     image_ = cv2.resize(image_, (width, height))
    image_ = image.copy()
    #獲得待檢測圖片的尺寸
    height, width = image_.shape
    # 將模板resize至與圖像一樣大小
    template_img = cv2.resize(template_img, (width, height))
    # 模板匹配,返回匹配得分
    result = cv2.matchTemplate(image_, template_img, cv2.TM_CCOEFF)
    return result[0][0]


# 對分割得到的字符逐一匹配
def template_matching(word_images):
    results = []
    for index,word_image in enumerate(word_images):
        if index==0:
            best_score = []
            for chinese_words in chinese_words_list:
                score = []
                for chinese_word in chinese_words:
                    result = template_score(chinese_word,word_image)
                    score.append(result)
                best_score.append(max(score))
            i = best_score.index(max(best_score))
            # print(template[34+i])
            r = template[34+i]
            results.append(r)
            continue
        if index==1:
            best_score = []
            for eng_word_list in eng_words_list:
                score = []
                for eng_word in eng_word_list:
                    result = template_score(eng_word,word_image)
                    score.append(result)
                best_score.append(max(score))
            i = best_score.index(max(best_score))
            # print(template[10+i])
            r = template[10+i]
            results.append(r)
            continue
        else:
            best_score = []
            for eng_num_word_list in eng_num_words_list:
                score = []
                for eng_num_word in eng_num_word_list:
                    result = template_score(eng_num_word,word_image)
                    score.append(result)
                best_score.append(max(score))
            i = best_score.index(max(best_score))
            # print(template[i])
            r = template[i]
            results.append(r)
            continue
    return results


word_images_ = word_images.copy()
# 調(diào)用函數(shù)獲得結(jié)果
result = template_matching(word_images_)
print(result)
# "".join(result)函數(shù)將列表轉(zhuǎn)換為拼接好的字符串,方便結(jié)果顯示
print( "".join(result))



height,weight = origin_image.shape[0:2]
print(height)
print(weight)

image_1 = origin_image.copy()
cv2.rectangle(image_1, (int(0.2*weight), int(0.75*height)), (int(weight*0.9), int(height*0.95)), (0, 255, 0), 5)

#設(shè)置需要顯示的字體
fontpath = "font/simsun.ttc"
font = ImageFont.truetype(fontpath,64)
img_pil = Image.fromarray(image_1)
draw = ImageDraw.Draw(img_pil)
#繪制文字信息
draw.text((int(0.2*weight)+25, int(0.75*height)),  "".join(result), font = font, fill = (255, 255, 0))
bk_img = np.array(img_pil)
print(result)
print( "".join(result))
plt_show0(bk_img)

到了這里,關(guān)于【Python實戰(zhàn)】——Python+Opencv是實現(xiàn)車牌自動識別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 河道垃圾自動識別監(jiān)測算法 opencv

    河道垃圾自動識別監(jiān)測算法 opencv

    河道垃圾自動識別監(jiān)測系統(tǒng)通過python+opencv網(wǎng)絡(luò)模型技術(shù),河道垃圾自動識別監(jiān)測算法對水面上的垃圾進行自動識別,一旦發(fā)現(xiàn)垃圾污染將自動發(fā)出警報。OpenCV基于C++實現(xiàn),同時提供python, Ruby, Matlab等語言的接口。OpenCV-Python是OpenCV的Python API,結(jié)合了OpenCV C++API和Python語言的最佳

    2024年02月11日
    瀏覽(18)
  • 基于OpenCV的自動報靶識別實驗

    基于OpenCV的自動報靶識別實驗

    戶外胸環(huán)靶自動報靶問題,目前是通過聲電等方式來識別,成本較高,本文嘗試使用圖像處理的方法來識別。 前提:固定相機 確定靶子的四個頂點:目前使用人工手動標注,暫不考慮自動,這步尤為關(guān)鍵直接影響后續(xù)彈孔位置確定 提取靶子:透視變換 尋找最新的彈孔:a)優(yōu)

    2024年02月08日
    瀏覽(55)
  • 【功能超全】基于OpenCV車牌識別停車場管理系統(tǒng)軟件開發(fā)【含python源碼+PyqtUI界面+功能詳解】-車牌識別python 深度學習實戰(zhàn)項目

    【功能超全】基于OpenCV車牌識別停車場管理系統(tǒng)軟件開發(fā)【含python源碼+PyqtUI界面+功能詳解】-車牌識別python 深度學習實戰(zhàn)項目

    摘要: 車牌識別系統(tǒng)(Vehicle License Plate Recognition,VLPR) 是指能夠檢測到受監(jiān)控路面的車輛并自動提取車輛牌照信息(含漢字字符、英文字母、阿拉伯數(shù)字及號牌顏色)進行處理的技術(shù)。車牌識別是現(xiàn)代智能交通系統(tǒng)中的重要組成部分之一,應(yīng)用十分廣泛。本文詳細介紹了 車牌

    2024年02月09日
    瀏覽(27)
  • Selenium+2Captcha 自動化+驗證碼識別實戰(zhàn)

    Selenium+2Captcha 自動化+驗證碼識別實戰(zhàn)

    本文深入探討了使用Selenium庫進行網(wǎng)頁自動化操作,并結(jié)合2Captcha服務(wù)實現(xiàn)ReCAPTCHA驗證碼的破解。內(nèi)容涵蓋Selenium的基礎(chǔ)知識、驗證碼的分類、2Captcha服務(wù)的使用,以及通過實例進行的詳細講解,最后對實踐進行總結(jié)和優(yōu)化思考,為讀者提供了一條完整的驗證碼破解實踐路線圖

    2024年02月14日
    瀏覽(23)
  • Python+OpenCV+paddleocr基于傳統(tǒng)圖像處理技術(shù)實現(xiàn)車牌識別

    Python+OpenCV+paddleocr基于傳統(tǒng)圖像處理技術(shù)實現(xiàn)車牌識別

    目錄 一、前言 二、預處理-提取車牌 ????????1. 轉(zhuǎn)灰度圖 ????????2. 頂帽運算 ????????3.?Sobel算子提取y方向邊緣 ????????4.?自適應(yīng)二值化 ????????5.?開運算分割(縱向去噪,分隔) ????????6.?閉運算合并 ????????7.?膨脹/腐蝕 ????????8.?腐蝕

    2024年02月04日
    瀏覽(19)
  • 目標檢測YOLO實戰(zhàn)應(yīng)用案例100講-橘子自動采摘機視覺識別

    目錄 前言 卷積神經(jīng)網(wǎng)絡(luò)相關(guān)理論基礎(chǔ) 2.1傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型 2.2卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

    2024年01月17日
    瀏覽(23)
  • 【數(shù)據(jù)挖掘?qū)崙?zhàn)】——電力竊漏電用戶自動識別(LM神經(jīng)網(wǎng)絡(luò)和決策樹)

    【數(shù)據(jù)挖掘?qū)崙?zhàn)】——電力竊漏電用戶自動識別(LM神經(jīng)網(wǎng)絡(luò)和決策樹)

    項目代碼地址:https://gitee.com/lingxw123/datamining_project.git 項目來源于《數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》 傳統(tǒng)的防竊漏電方法主要通過定期巡檢、定期校驗

    2024年01月20日
    瀏覽(21)
  • OpenCV實戰(zhàn)5 車牌號識別

    OpenCV實戰(zhàn)5 車牌號識別

    原文在這里,參考這個進行了改進 感覺學到了很多東西,便在這里作下筆記。 效果: 目錄 一、知識點學習: 1. fstream 2. 形態(tài)學開操作與形態(tài)閉操作 2.1 第一個角度:消除較小的聯(lián)通區(qū)域 vs 彌合較小的聯(lián)通區(qū)域 2.2 第二個角度:消除背景噪音 vs 消除前景噪音 3、approPolyDp函數(shù)

    2024年02月01日
    瀏覽(20)
  • TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI檢測算法自動識別及應(yīng)用

    TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI檢測算法自動識別及應(yīng)用

    安全帽/反光衣/工作服自動識別檢測算法可以通過opencv+yolo網(wǎng)絡(luò)對現(xiàn)場畫面中人員穿戴著裝進行實時分析檢測,判斷人員是否穿著反光衣/安全帽。在應(yīng)用場景中,安全帽/反光衣/工作服檢測應(yīng)用十分重要,通過對人員的規(guī)范著裝進行實時監(jiān)測與預警, 可以降低安全隱患,提高

    2024年02月03日
    瀏覽(19)
  • 使用Python進行自動語音識別

    自動語音識別(ASR)是將口頭語言轉(zhuǎn)換為書面文本的過程。 ASR技術(shù)已經(jīng)存在多年,但隨著機器學習和深度神經(jīng)網(wǎng)絡(luò)的進步,它變得更加準確可靠。在本文中,我們將探討如何使用Python和Hugging Face Transformers庫執(zhí)行ASR,同時利用PySide6設(shè)計了一個簡單的GUI界面,演示如下所示:

    2023年04月08日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包