#coding=utf-8 import os import numpy as np import cv2 import json from hyperlpr import pipline as pp import sys from Levenshtein import StringMatcher as sm reload(sys) sys.setdefaultencoding("utf-8") parent= "you folder" def comparestring(a,b): g = 0 if len(a) == len(b): for x,y in zip(a,b): if x!=y: g+=1 return g count = 0 ; count_p = 0 count_d = 0 count_lev = 0 count_undetected = 0 roi = [470,400,650,580] for filename in os.listdir(parent): path = os.path.join(parent,filename) print path if path.endswith(".jpg") or path.endswith(".png"): ics,name = os.path.split(path) name,ext = name.split(".") image = cv2.imread(path) image = image[roi[1]:roi[1]+roi[3],roi[0]:roi[0]+roi[2]] # cv2.imshow("test",image) # cv2.waitKey(0) info,dataset = pp.SimpleRecognizePlate(image) ext = ext.strip() name = name.strip() if len(dataset)==0: count_undetected +=1 # cv2.imwrite("./cache/bad2/" + name + ".png", image) for one in dataset: # p = sm.StringMatcher(seq1=one.encode("utf-8"),seq2=name.encode("utf-8")) A = one.decode("utf-8") B = name.decode("utf-8") print one.decode("utf-8"),"<->",name.decode("utf-8"),"编辑距离:",comparestring(A,B) if comparestring(A,B)<3: count_lev+=1 else: cv2.imwrite("./cache/bad2/"+B+"->"+A+".png",image) if one.decode("utf-8") == name.decode("utf-8"): count_p+=1 break else: print "error",one.decode("utf-8"), name.decode("utf-8") count_d+=1 # cv2.imshow("image",image) # cv2.waitKey(0) # break count+=1 print count_p / float(count),"编辑距离[1]:",count_lev/float(count),u"识出",count_p,u"总数",count,u"未识出",count_d,u"未检测出",count_undetected if count_p+count_d+count_undetected!=count: print dataset,len(dataset) # exit(0)