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
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
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
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
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
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