import cv2
cap=cv2.VideoCapture('车牌识别.mp4')#读取视频的内容,也可以换做是摄像头进行实时传输视频
cap.set(3,640)
cap.set(4,480)#改变视频的宽和高
carplates=cv2.CascadeClassifier('haarcascade_russian_plate_number.xml')#加入车牌识别的模型
sss=0#存储照片的序号
minarea=200#最小面积
while True:
success,img=cap.read()#进行图像的一帧一帧的循环
if success==False:
print('无法读取视频')
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度化图片
carnumber=carplates.detectMultiScale(imgGray,1.1,10)#将模型加载到图片上
for (x,y,w,h) in carnumber:#在寻找的结果中进行绘画操作
area=w*h
if area>minarea:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)#画出矩形
cv2.putText(img,'Car Number',(x,y-5),cv2.FONT_HERSHEY_TRIPLEX,1,(255,255,0),2)#进行文本的添加
imgroi=img[y:y+h,x:x+w]#把我们感兴趣的区域裁剪出来
cv2.imshow('roi-picture',imgroi)#展示感兴趣的区域
cv2.imshow('result-picture',img)#把我们这个绘画后的图片展示出来w
if cv2.waitKey(1) & 0xFF == ord('s'):
cv2.imwrite(str(sss)+".jpg",imgroi)#保存图片
cv2.rectangle(img,(0,200),(640,300),(0,255,0),cv2.FILLED)
cv2.putText(img, "Saved-success", (150, 265), cv2.FONT_HERSHEY_DUPLEX,2, (0, 25, 255), 2)
cv2.imshow("result-picture", img)#展示在一个窗口
cv2.waitKey(500)#等待多长时间
sss = sss + 1
用到的模型是针对于美国车牌的,中国的目前还不能检测出来,后续分布中国的车牌检测代码。
仅供学习参考,如有不足,敬请指正!