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 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
Пример #3
0
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")
Пример #4
0
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
Пример #5
0
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")