import hyperlpr # 匯入hyperlpr庫,處理車牌識別
import cv2 # 匯入CV2庫,處理圖片或視頻
import numpy as np
from PIL import ImageFont, ImageDraw
from PIL import Image
def cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=30):
if (isinstance(img, np.ndarray)): # 判斷是否OpenCV圖片型別
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 創建一個可以在給定影像上繪圖的物件
draw = ImageDraw.Draw(img)
# 字體的格式
fontStyle = ImageFont.truetype(
"simsun.ttc", textSize, encoding="utf-8")
# 繪制文本
draw.text(position, text, textColor, font=fontStyle)
# 轉換回OpenCV格式
return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
def main():
mp4 = cv2.VideoCapture("2.mp4") # 讀出視頻的路徑
while (mp4.isOpened()): # 使用mp4.isOpened()函式來判斷視頻是否正常打開
ret, frame = mp4.read() # 讀取視頻,第一個引數ret 為True 或者False,代表有沒有讀取到圖片,第二個引數frame表示截取到一幀的圖片
if ret == True: # 判斷視頻有沒有結束
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 將每一幀圖片轉為灰色以便接下來處理
k = hyperlpr.HyperLPR_plate_recognition(frame) # 使用HyperLPR_plate_recognition函式識別圖片內車牌號
print(type(k))
if k:
d = []
a = k[0][0]
b = k[0][1]
c = k[0][2]
print(a)
print(b)
b = str(b)
print(c)
d.append(c)
f = np.array(d, dtype=int)
print(type(d))
for (x, y, w, h) in d:
cv2.rectangle(frame, (x, y), (w, h), (0, 0, 255), 2)
frame = cv2AddChineseText(frame, a, (x, y), (255, 0, 0), 30)
cv2.putText(frame, b, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
cv2.imshow('frame', frame)
# 視頻正常打開并把識別的車牌號寫入jianVideo.txt內
if cv2.waitKey(1) & 0xFF == ord('q'): # 類似中斷播放的按鍵,按q跳出回圈終止播放
break
else: # 如果視頻結束正常跳出回圈終止播放
break
mp4.release() # 釋放視頻
cv2.destroyAllWindows() # 將創建的所有的視窗銷毀
if __name__ == '__main__':
main()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/177562.html
標籤:AI
上一篇:FPGA:雙線軌絲杠式升降臺(及A4988與42步進電機原理)(同時包含51及32程式)
下一篇:100個numpy問題8-100
