python+pyhyper實現(xiàn)識別圖片中的車牌號思路詳解
背景
最近領(lǐng)導(dǎo)給布置了一個基于圖片識別車牌號的工具開發(fā)任務(wù),然后就去研究實現(xiàn)邏輯,自己根據(jù)opencv寫了一個小demo,發(fā)現(xiàn)不僅速度慢而且成功率極低。然后,就找到了Hyperlpr開源項目。
環(huán)境搭建
排雷1:有教程說在github上下載源碼:https://github.com/zeusees/HyperLPR,自己編譯,結(jié)果github上已經(jīng)停止維護了,然后再gitee找到了:Hyperlpr項目
排雷2:hyperlpr環(huán)境搭建比較苛刻,建議直接在requirements.txt文件中維護好版本號
實現(xiàn):
我是直接pip install hyperlpr
安裝的
驗證
import cv2 from hyperlpr import HyperLPR_plate_recognition if __name__ == '__main__': image = cv2.imread("one.jpeg") result = HyperLPR_plate_recognition(image)
報錯:
mat_ = cv2.estimateRigidTransform(org_pts, target_pts, True)
AttributeError: module 'cv2' has no attribute 'estimateRigidTransform'
修改hyperlpr.py文件,大概在231行
將mat_ = cv2.estimateRigidTransform(org_pts, target_pts, True)
修改為
mat_,inlier = cv2.estimateAffine2D(org_pts, target_pts)
再次執(zhí)行,執(zhí)行成功,返回一個列表,依次是車牌號,準(zhǔn)確率,車牌號在圖片中的坐標(biāo)
二次開發(fā)
經(jīng)過實驗發(fā)現(xiàn),如果圖片中存在多個車牌號,只能識別圖片中的一個車牌號
拜讀源碼發(fā)現(xiàn)self.detect_ssd(image)
函數(shù)返回的是一個可迭代變量,追蹤進去應(yīng)該可以發(fā)現(xiàn)點東西
和猜測一致,self.detect_ssd(image)返回的是一個列表,但是找到一個車牌就返回了,只需要將 return cropped_images
放到for循環(huán)外賣外面即可
修改前:
修改后:
驗證:
標(biāo)記
附源碼:
import cv2 import numpy as np from PIL import ImageFont, Image, ImageDraw from hyperlpr import HyperLPR_plate_recognition if __name__ == '__main__': image = cv2.imread("two.jpeg") result = HyperLPR_plate_recognition(image) print(result) # 標(biāo)記車牌號 if result: for index, item in enumerate(result): # 車牌號 car_code = item[0] # 可信度 conf = item[1] # 車牌框左上角坐標(biāo) pt1 = (item[2][0], item[2][1]) # 車牌框右下角坐標(biāo) pt2 = (item[2][2], item[2][3]) # 繪制車牌框 cv2.rectangle(image, pt1=pt1, pt2=pt2, color=(255, 0, 0), thickness=3) # 設(shè)置需要顯示的字體 font_path = 'fonts/simsun.ttc' font = ImageFont.truetype(font_path, size=40, index=1) image = Image.fromarray(image) draw = ImageDraw.Draw(image) # 繪制文字信息 draw.text((pt1[0] + 30, pt1[1] - 30), car_code, font=font, fill=(0, 0, 255)) image = np.array(image) # cv2.namedWindow('image', 0) # cv2.imshow('image', image) # cv2.waitKey(100000) cv2.imwrite('d:/two.jpeg', image)
到此這篇關(guān)于python+pyhyper實現(xiàn)識別圖片中的車牌號的文章就介紹到這了,更多相關(guān)python車牌號識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python構(gòu)造函數(shù)init實例方法解析
這篇文章主要介紹了python構(gòu)造函數(shù)init實例方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01YOLOv5車牌識別實戰(zhàn)教程(三)模型訓(xùn)練與評估
這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(三)模型訓(xùn)練與評估,在這個教程中,我們將一步步教你如何使用YOLOv5進行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下2023-04-04Pycharm搭建Django項目詳細教程(看完這一篇就夠了)
這篇文章主要給大家介紹了關(guān)于Pycharm搭建Django項目的詳細教程,想要學(xué)習(xí)的小伙伴看完這一篇就夠了,pycharm是一種Python?IDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,需要的朋友可以參考下2023-11-11python神經(jīng)網(wǎng)絡(luò)MobileNetV3?small模型的復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)MobileNetV3?small模型的復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05Anaconda安裝pytorch及配置PyCharm 2021環(huán)境
小編使用的是python3.8版本,為了防止訪問量過大導(dǎo)致http連接失敗,所以采用本地安裝,具體安裝方法本文給大家詳細介紹,在文章底部給大家提到了PyCharm 2021配置環(huán)境的方法,感興趣的朋友一起看看吧2021-06-06Python中網(wǎng)絡(luò)請求中Retry策略實現(xiàn)方式
這篇文章主要介紹了Python中網(wǎng)絡(luò)請求中Retry策略實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06