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()
对视频中车辆车牌进行识别并圈出
猜你喜欢
转载自blog.csdn.net/liaoqingjian/article/details/109101249
今日推荐
周排行