def SimpleRecognizePlateByE2E(image): t0 = time.time() images = detect.detectPlateRough(image,image.shape[0],top_bottom_padding_rate=0.1) res_set = [] for j,plate in enumerate(images): plate, rect, origin_plate =plate # plate = cv2.cvtColor(plate, cv2.COLOR_RGB2GRAY) plate =cv2.resize(plate,(136,36*2)) res,confidence = e2e.recognizeOne(origin_plate) print "res",res t1 = time.time() ptype = td.SimplePredict(plate) if ptype>0 and ptype<5: # pass plate = cv2.bitwise_not(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) image_rgb = fv.finemappingVertical(image_rgb) cache.verticalMappingToFolder(image_rgb) cv2.imwrite("./"+str(j)+".jpg",image_rgb) res,confidence = e2e.recognizeOne(image_rgb) print res,confidence res_set.append([[],res,confidence]) if confidence>0.7: image = drawRectBox(image, rect, res+" "+str(round(confidence,3))) return image,res_set
def SimpleRecognizePlateByE2E(image): t0 = time.time() images = detect.detectPlateRough(image, image.shape[0], top_bottom_padding_rate=0.1) res_set = [] for j, plate in enumerate(images): plate, rect, origin_plate = plate # plate = cv2.cvtColor(plate, cv2.COLOR_RGB2GRAY) plate = cv2.resize(plate, (136, 36 * 2)) res, confidence = e2e.recognizeOne(origin_plate) print("res", res) t1 = time.time() ptype = td.SimplePredict(plate) if (ptype > 0) and (ptype < 5): # pass plate = cv2.bitwise_not(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) image_rgb = fv.finemappingVertical(image_rgb) cache.verticalMappingToFolder(image_rgb) cv2.imwrite("./" + str(j) + ".jpg", image_rgb) res, confidence = e2e.recognizeOne(image_rgb) print(res, confidence) res_set.append([[], res, confidence]) if confidence > 0.7: image = drawRectBox(image, rect, res + " " + str(round(confidence, 3))) return image, res_set
def SimpleRecognizePlate(image): t0 = time.time() images = detect.detectPlateRough(image, image.shape[0], top_bottom_padding_rate=0.1) res_set = [] for j, plate in enumerate(images): plate, rect, origin_plate = plate # plate = cv2.cvtColor(plate, cv2.COLOR_RGB2GRAY) plate = cv2.resize(plate, (136, 36 * 2)) t1 = time.time() ptype = td.SimplePredict(plate) if (ptype > 0) and (ptype < 5): plate = cv2.bitwise_not(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) cache.verticalMappingToFolder(image_rgb) print("e2e:", e2e.recognizeOne(image_rgb)) image_gray = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2GRAY) # image_gray = horizontalSegmentation(image_gray) cv2.imshow("image_gray", image_gray) # cv2.waitKey() cv2.imwrite("./" + str(j) + ".jpg", image_gray) # cv2.imshow("image",image_gray) # cv2.waitKey(0) print("校正", time.time() - t1, "s") # cv2.imshow("image,",image_gray) # cv2.waitKey(0) t2 = time.time() val = segmentation.slidingWindowsEval(image_gray) # print val print("分割和识别", time.time() - t2, "s") if len(val) == 3: blocks, res, confidence = val if confidence / 7 > 0.7: image = drawRectBox(image, rect, res) res_set.append(res) for i, block in enumerate(blocks): block_ = cv2.resize(block, (25, 25)) block_ = cv2.cvtColor(block_, cv2.COLOR_GRAY2BGR) image[j * 25:(j * 25) + 25, i * 25:(i * 25) + 25] = block_ if image[j * 25:(j * 25) + 25, i * 25:(i * 25) + 25].shape == block_.shape: pass if confidence > 0: print("车牌:", res, "置信度:", confidence / 7) else: pass # print "不确定的车牌:", res, "置信度:", confidence print(time.time() - t0, "s") return image, res_set
def SimpleRecognizePlate(image): t0 = time.time() images = detect.detectPlateRough(image,image.shape[0],top_bottom_padding_rate=0.1) res_set = [] for j,plate in enumerate(images): plate, rect, origin_plate =plate # plate = cv2.cvtColor(plate, cv2.COLOR_RGB2GRAY) plate =cv2.resize(plate,(136,36*2)) t1 = time.time() ptype = td.SimplePredict(plate) if ptype>0 and ptype<5: plate = cv2.bitwise_not(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) cache.verticalMappingToFolder(image_rgb) print "e2e:", e2e.recognizeOne(image_rgb) image_gray = cv2.cvtColor(image_rgb,cv2.COLOR_RGB2GRAY) # image_gray = horizontalSegmentation(image_gray) cv2.imshow("image_gray",image_gray) # cv2.waitKey() cv2.imwrite("./"+str(j)+".jpg",image_gray) # cv2.imshow("image",image_gray) # cv2.waitKey(0) print "校正",time.time() - t1,"s" # cv2.imshow("image,",image_gray) # cv2.waitKey(0) t2 = time.time() val = segmentation.slidingWindowsEval(image_gray) # print val print "分割和识别",time.time() - t2,"s" if len(val)==3: blocks, res, confidence = val if confidence/7>0.7: image = drawRectBox(image,rect,res) res_set.append(res) for i,block in enumerate(blocks): block_ = cv2.resize(block,(25,25)) block_ = cv2.cvtColor(block_,cv2.COLOR_GRAY2BGR) image[j * 25:(j * 25) + 25, i * 25:(i * 25) + 25] = block_ if image[j*25:(j*25)+25,i*25:(i*25)+25].shape == block_.shape: pass if confidence>0: print "车牌:",res,"置信度:",confidence/7 else: pass # print "不确定的车牌:", res, "置信度:", confidence print time.time() - t0,"s" return image,res_set
def RecognizePlateJson(image): images = detect.detectPlateRough(image,image.shape[0],top_bottom_padding_rate=0.1) jsons = [] for j,plate in enumerate(images): plate,rect,origin_plate =plate res, confidence = e2e.recognizeOne(origin_plate) print "res",res cv2.imwrite("./"+str(j)+"_rough.jpg",plate) # print "车牌类型:",ptype # plate = cv2.cvtColor(plate, cv2.COLOR_RGB2GRAY) plate =cv2.resize(plate,(136,int(36*2.5))) t1 = time.time() ptype = td.SimplePredict(plate) if ptype>0 and ptype<4: plate = cv2.bitwise_not(plate) # demo = verticalEdgeDetection(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) cache.verticalMappingToFolder(image_rgb) # print time.time() - t1,"校正" print "e2e:",e2e.recognizeOne(image_rgb)[0] image_gray = cv2.cvtColor(image_rgb,cv2.COLOR_BGR2GRAY) cv2.imwrite("./"+str(j)+".jpg",image_gray) # image_gray = horizontalSegmentation(image_gray) t2 = time.time() res, confidence = e2e.recognizeOne(image_rgb) res_json = {} if confidence > 0.6: res_json["Name"] = res res_json["Type"] = td.plateType[ptype] res_json["Confidence"] = confidence; res_json["x"] = int(rect[0]) res_json["y"] = int(rect[1]) res_json["w"] = int(rect[2]) res_json["h"] = int(rect[3]) jsons.append(res_json) print json.dumps(jsons,ensure_ascii=False,encoding="gb2312") return json.dumps(jsons,ensure_ascii=False,encoding="gb2312")
def plate_recognizechar(image, resize_h=720): images = pd.detectPlateRough(image, resize_h, top_bottom_padding_rate=0.1) jsons = [] for j, plate in enumerate(images): plate, rect, origin_plate = plate #res, confidence = e2e.recognizeOne(origin_plate) #print("RecognizePlateJson res",res) #cv2.imwrite("./"+str(j)+"_rough.jpg",plate) # plate = cv2.cvtColor(plate, cv2.COLOR_RGB2GRAY) plate = cv2.resize(plate, (136, int(36 * 2.5))) t1 = time.time() ptype = td.platetype_predict(plate) print("plate_recognize ptype", ptype) if ptype > 0 and ptype < 4: plate = cv2.bitwise_not(plate) # demo = verticalEdgeDetection(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) cache.verticalMappingToFolder(image_rgb) #print("e2e:",e2e.recognizeOne(image_rgb)[0]) image_gray = cv2.cvtColor(image_rgb, cv2.COLOR_BGR2GRAY) cv2.imwrite("./" + str(j) + ".jpg", image_gray) # image_gray = horizontalSegmentation(image_gray) t2 = time.time() print("plate_recognize transform time:", t2 - t1) res, confidence = e2e.recognizeOne(image_rgb) t3 = time.time() print("plate_recognize transform time:", t3 - t2) print("plate_recognize res", res, " confidence:", confidence) res_json = {} if confidence > 0.9: res_json["Name"] = res res_json["Type"] = td.plateType[ptype] res_json["Confidence"] = confidence res_json["x"] = int(rect[0]) res_json["y"] = int(rect[1]) res_json["w"] = int(rect[2]) res_json["h"] = int(rect[3]) jsons.append(res_json) print(json.dumps(jsons, ensure_ascii=False)) return json.dumps(jsons, ensure_ascii=False)
def SimpleRecognizePlate(image): images = detect.detectPlateRough( image, image.shape[0], top_bottom_padding_rate=0.1) res_set = [] for j, plate in enumerate(images): plate, rect, origin_plate = plate plate = cv2.resize(plate, (136, 36 * 2)) ptype = td.SimplePredict(plate) if ptype > 0 and ptype < 5: plate = cv2.bitwise_not(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) image_gray = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2GRAY) val = segmentation.slidingWindowsEval(image_gray) if len(val) == 3: blocks, res, confidence = val if confidence > 0: print "车牌号码: %s" % res else: pass return image, res_set
def RecognizePlateJson(image): images = detect.detectPlateRough(image, image.shape[0], top_bottom_padding_rate=0.1) jsons = [] for j, plate in enumerate(images): plate, rect, origin_plate = plate cv2.imwrite("./" + str(j) + "_rough.jpg", plate) # print "车牌类型:",ptype # plate = cv2.cvtColor(plate, cv2.COLOR_RGB2GRAY) plate = cv2.resize(plate, (136, int(36 * 2.5))) t1 = time.time() ptype = td.SimplePredict(plate) if ptype > 0 and ptype < 5: plate = cv2.bitwise_not(plate) # demo = verticalEdgeDetection(plate) image_rgb = fm.findContoursAndDrawBoundingBox(plate) image_rgb = fv.finemappingVertical(image_rgb) cache.verticalMappingToFolder(image_rgb) # print time.time() - t1,"校正" image_gray = cv2.cvtColor(image_rgb, cv2.COLOR_BGR2GRAY) cv2.imwrite("./" + str(j) + ".jpg", image_gray) # image_gray = horizontalSegmentation(image_gray) t2 = time.time() val = segmentation.slidingWindowsEval(image_gray) if len(val) == 3: blocks, res, confidence = val if confidence / 7 > 0.0: image = drawRectBox(image, rect, res) for i, block in enumerate(blocks): block_ = cv2.resize(block, (25, 25)) block_ = cv2.cvtColor(block_, cv2.COLOR_GRAY2BGR) image[j * 25:(j * 25) + 25, i * 25:(i * 25) + 25] = block_ if image[j * 25:(j * 25) + 25, i * 25:(i * 25) + 25].shape == block_.shape: pass plate_name = res res_json = {} if confidence / 7 > 0.0: res_json["Name"] = plate_name.decode() res_json["Type"] = td.plateType[ptype] res_json["Confidence"] = confidence / 7 res_json["x"] = int(rect[0]) res_json["y"] = int(rect[1]) res_json["w"] = int(rect[2]) res_json["h"] = int(rect[3]) # print "车牌:",res,"置信度:",confidence/7 jsons.append(res_json) else: pass # print "不确定的车牌:", res, "置信度:", confidence # print jsons # print json.dumps(jsons,ensure_ascii=False,encoding="gb2312") return json.dumps(jsons, ensure_ascii=False, encoding="gb2312")