def lowFit(): keyDict = request.get_json() userId = hashlib.sha224(keyDict['userId']).hexdigest() catId = keyDict['catId'] processOut = cv2.imread('../users/' + userId + '/processOutLower.png') if processOut is None: result = {} result['status'] = 'User lowers not extracted' resp = Response(json.dumps(result),status=200, mimetype='application/json') return resp cropFlood = cv2.imread('../catalogue/lower/image' + catId + '/cropFlood.png') lowInst = lowerFit(processOut,cropFlood) lowInst.calcLowerLine() lowInst.resizeCat() finalOut = lowInst.fit() fitInst = userFit(processOut,cropFlood) userBox = pickle.load(open('../users/' + userId + '/userLowBox.p')) fitInst.setUserBox(userBox) userImg = cv2.imread('../users/' + userId + '/userImg.png') output = fitInst.fittingOntoUser(finalOut,userImg) cv2.imwrite('../users/' + userId + '/fittingOntoUser.jpg',output) encodeImg = base64.b64encode(open('../users/' + userId +'/fittingOntoUser.jpg').read()) result = {} result['img'] = encodeImg resp = Response(json.dumps(result),status=200, mimetype='application/json') return resp
def fit(): keyDict = request.get_json() userId = hashlib.sha224(keyDict['userId']).hexdigest() catId = keyDict['catId'] processOut = cv2.imread('../users/' + userId + '/processOutupper.png') if processOut is None: result = {} result['status'] = 'Upload your image first' resp = Response(json.dumps(result), status=200, mimetype='application/json') return resp cropFlood = cv2.imread('../catalogue/upper/image' + catId + '/cropFloodOut.png') LU, RU = pickle.load(open('../users/' + userId + '/segLines.p')) LC, RC = pickle.load( open('../catalogue/upper/image' + catId + '/segLines.p')) leftArmUser = cv2.imread('../users/' + userId + '/leftArmUser.png') rightArmUser = cv2.imread('../users/' + userId + '/rightArmUser.png') leftArmCat = cv2.imread('../catalogue/upper/image' + catId + '/leftArmCat.png') rightArmCat = cv2.imread('../catalogue/upper/image' + catId + '/rightArmCat.png') userBox = pickle.load(open('../users/' + userId + '/userBox.p')) fitInst = userFit(processOut, cropFlood) fitInst.setSegLines(LC, RC, LU, RU) colorUserOut = fitInst.colorUser() cv2.imwrite('../users/' + userId + '/debug/colorUserOut.png', colorUserOut) fitInst.setUserArm(leftArmUser, rightArmUser) fitInst.setCatArm(leftArmCat, rightArmCat) fitLeft, fitRight = fitInst.sleeveFit() cv2.imwrite('../users/' + userId + '/debug/fitLeft.png', fitLeft) cv2.imwrite('../users/' + userId + '/debug/fitRight.png', fitRight) bodyFitOut = fitInst.bodyFit(colorUserOut) cv2.imwrite('../users/' + userId + '/debug/bodyFitOut.png', bodyFitOut) finalFit = fitInst.finalFit(bodyFitOut, fitLeft, fitRight) cv2.imwrite('../users/' + userId + '/debug/finalFit.png', finalFit) fitInst.setUserBox(userBox) userImg = cv2.imread('../users/' + userId + '/userImg.png') output = fitInst.fittingOntoUser(finalFit, userImg) cv2.imwrite('../users/' + userId + '/fittingOntoUser.jpg', output) encodeImg = base64.b64encode( open('../users/' + userId + '/fittingOntoUser.jpg').read()) result = {} result['img'] = encodeImg resp = Response(json.dumps(result), status=200, mimetype='application/json') return resp
rightArmUser = processInst.armSegment(processOut, 'right') catImg = cv2.imread(sys.argv[2]) catInst = catPreprocess(catImg) floodOut = catInst.edgeDetect() cropFlood = catInst.cropImg(floodOut) catInst.segImage(cropFlood) LC, RC = catInst.getSegLines() rightArmCat = catInst.armSegment(cropFlood, 'right') leftArmCat = catInst.armSegment(cropFlood, 'left') fitInst = userFit(processOut, cropFlood) fitInst.setSegLines(LC, RC, LU, RU) colorUserOut = fitInst.colorUser() fitInst.setUserArm(leftArmUser, rightArmUser) fitInst.setCatArm(leftArmCat, rightArmCat) fitLeft, fitRight = fitInst.sleeveFit() bodyFitOut = fitInst.bodyFit(colorUserOut) finalFit = fitInst.finalFit(bodyFitOut, fitLeft, fitRight) fitInst.setUserBox(processInst.returnUserBox()) output = fitInst.fittingOntoUser(finalFit, cv2.imread(sys.argv[1])) cv2.imwrite('onUser.jpg', output)