示例#1
0
def verifyex():
    logger.info('Calling compare api')
    if 'img1' not in request.files:
        return "Img1 param missing", 400
    if 'img2' not in request.files:
        return "Img2 param missing", 400
    logger.info('Compare api validation: both images found')

    logger.info('Initiate image helper object')
    imageHelper = ih.ImageHelper(logger)
    logger.info('End Initiate image helper object')

    logger.info('Start reading images from request')

    img1 = imageHelper.get_rgb_img_from_req_file(request.files['img1'])
    img2 = imageHelper.get_rgb_img_from_req_file(request.files['img2'])

    # Define face compare object
    logger.info('Initiate face comapre object')
    face_compare = FaceCompare(logger)
    distance = face_compare.compare(img1, img2)

    logger.info("End getting comapre result: {}".format(distance))
    result = json.dumps({
        'distance':
        distance,
        'matched':
        distance < config.general['acceptance-compare-distance']
    })
    resp = Response(response=result, status=200, mimetype="application/json")
    return resp
示例#2
0
def reco2(img1, sql, arr, pcount):
    logger.info('Reco method')
    g = adabas.Adabas(config, logger)
    count, data = g.getData(sql)

    # Define face compare object
    logger.info('Initiate face comapre & helper objects')
    face_compare = FaceCompare(logger)
    imageHelper = ih.ImageHelper(logger)

    logger.info('Start scan records')
    for row in data:
        try:
            logger.info("Start converting to image from base64")
            img2 = imageHelper.get_rgb_img_from_base64(row[3])
            logger.info('End converting  get_rgb_img_from_base64')
            distance = face_compare.compare(img1, img2)
            logger.info("End getting comapre result: {}".format(distance))
            pcount.value = pcount.value + 1
            logger.info("Increment procssing records by 1")
            if (distance < config.general['acceptance-compare-distance']):
                arr.append({'cid': row[0], 'distance': distance})
                logger.info("append matched record")
        except:
            e = sys.exc_info()[0]
            logger.error(
                "Error while proccessing data: {}, exception: {}".format(
                    row[0], e))

    return arr
示例#3
0
def recognize2():
    logger.info('Calling recognize2 api')

    if 'image' not in request.files and 'image' not in request.form:
        return "image param missing, image must be sent either posted file or public image path", 400

    imageHelper = ih.ImageHelper(logger)
    if 'image' in request.files:
        logger.info('Image sent as post file')
        img1 = imageHelper.get_rgb_img_from_req_file(request.files['image'])
    else:
        logger.info('Image sent as public path')
        img1 = imageHelper.get_rgb_img_from_url_path(request.form['image'])

    filter = None
    if 'filter' in request.form:
        filter = request.form['filter']
    logger.info("Filter: {}".format(filter))

    split = -1
    if 'split' in request.form:
        split = int(request.form['split'])
    logger.info("split: {}".format(split))
    # connect to db and loop through all images to compare

    gallery = adabas.Adabas(config, logger)
    sqls = gallery.getSplitJobs("profiles", filter, split)
    print(sqls)
    with Manager() as manager:
        matches = manager.list()
        processes = []
        pcount = Value('i', 0)
        for s in sqls:
            p = Process(target=reco2, args=(img1, s, matches, pcount))
            p.start()
            processes.append(p)

        for p in processes:
            p.join()

        logger.info("data count: {}".format(len(matches)))
        logger.info(matches)
        logger.info("Count of processed rows: {}".format(pcount.value))
        x = []
        for i in matches:
            x.append(i)
        result = json.dumps(x)
        resp = Response(response=result,
                        status=200,
                        mimetype="application/json")
        return resp
示例#4
0
def recognize():
    logger.info('Calling recognize api')

    if 'image' not in request.files and 'image' not in request.form:
        return "image param missing, image must be sent either posted file or public image path", 400

    imageHelper = ih.ImageHelper(logger)
    if 'image' in request.files:
        logger.info('Image sent as post file')
        img1 = imageHelper.get_rgb_img_from_req_file(request.files['image'])
    else:
        logger.info('Image sent as public path')
        img1 = imageHelper.get_rgb_img_from_url_path(request.form['image'])

    filter = None
    if 'filter' in request.form:
        filter = request.form['filter']
    logger.info("Filter: {}".format(filter))

    page = -1
    if 'page' in request.form:
        page = int(request.form['page'])
    logger.info("Page: {}".format(page))
    # connect to db and loop through all images to compare

    gallery = adabas.Adabas(config, logger)
    sqls = gallery.getJobs("profiles", filter, page)
    print(sqls)
    matches = []
    threads = []
    pcount = 0
    for s in sqls:
        t = threading.Thread(target=reco, args=(img1, s, matches, pcount))
        t.start()
        threads.append(t)

    for t in threads:
        t.join()

    logger.info("data count: {}".format(len(matches)))
    logger.info(matches)
    logger.info("Count of processed rows: {}".format(pcount))

    result = json.dumps(matches)
    resp = Response(response=result, status=200, mimetype="application/json")
    return resp
示例#5
0
def robot_recognize():
    method = "robot_recognize"
    logger.info("Calling {} api".format(method))

    if 'image' not in request.files and 'image' not in request.form:
        return "image param missing, image must be sent either posted file or public image path", 400

    imageHelper = ih.ImageHelper(logger)
    if 'image' in request.files:
        logger.info('Image sent as post file')
        img1 = imageHelper.get_rgb_img_from_req_file(request.files['image'])
    else:
        logger.info('Image sent as public path')
        img1 = imageHelper.get_rgb_img_from_url_path(request.form['image'])

    face_compare = FaceCompare(logger)
    results = face_compare.infer(img1, True)

    result = json.dumps(results)
    resp = Response(response=result, status=200, mimetype="application/json")
    return resp
示例#6
0
def verify():
    logger.info('Calling verify api')
    if 'image' not in request.files and 'image' not in request.form:
        return "image param missing", 400
    if 'subject_id' not in request.form:
        return "subject_id param missing", 400
    logger.info('verify api validation: passed')

    imageHelper = ih.ImageHelper(logger)
    logger.info('Start reading images from request')

    if 'image' in request.files:
        img1 = imageHelper.get_rgb_img_from_req_file(request.files['image'])
    else:
        img1 = imageHelper.get_rgb_img_from_url_path(request.form['image'])

    logger.info("End getting img1 from request")

    users_gallery = users.Users(config, logger)
    img2_path = users_gallery.get(request.form['subject_id'])['ImagePath']
    img2 = imageHelper.get_rgb_img_from_url_path(img2_path)
    logger.info('End getting img2 from request')

    # Define face compare object
    logger.info('Initiate face comapre object')
    face_compare = FaceCompare(logger)
    distance = face_compare.compare(img1, img2)
    logger.info("End getting verify result: {}".format(distance))

    result = json.dumps({
        'distance':
        distance,
        'verified':
        distance < config.general['acceptance-compare-distance']
    })
    logger.info("Response result: {}".format(result))
    resp = Response(response=result, status=200, mimetype="application/json")
    return resp