# -*- coding: utf-8 -*- from flask import request, Flask import numpy as np import json import time import cv2, base64 import argparse import sys, os import torch from PIL import Image import datetime from torchvision import transforms # from models.modeling import VisionTransformer, CONFIGS from gevent.pywsgi import WSGIServer sys.path.insert(0, ".") import datetime import detect import logging.config from skywalking import agent, config SW_SERVER = os.environ.get('SW_AGENT_COLLECTOR_BACKEND_SERVICES') SW_SERVICE_NAME = os.environ.get('SW_AGENT_NAME') if SW_SERVER and SW_SERVICE_NAME: config.init() #采集服务的地址,给自己的服务起个名称 #config.init(collector="123.60.56.51:11800", service='ieemoo-ai-search') #采集服务的地址,给自己的服务起个名称 agent.start() def setup_logging(path): if os.path.exists(path): with open(path, 'r') as f: config = json.load(f) logging.config.dictConfig(config) logger = logging.getLogger("root") return logger logger = setup_logging('utils/logging.json') # obs from obs import ObsClient obsClient = ObsClient( access_key_id='LHXJC7GIC2NNUUHHTNVI', secret_access_key='sVWvEItrFKWPp5DxeMvX8jLFU69iXPpzkjuMX3iM', server='https://obs.cn-east-3.myhuaweicloud.com' ) bucketName = 'ieemoo-ai' def Obs(image_file): #保存赠品未识别图片至ocrimg objectkey = os.path.basename(image_file) now_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S") time1 = now_time[:8] time2 = now_time[8:]+".jpg" objectkey_ = 'zhantingimgs/' + time1 + '/' + time2 logger.info(f"obs_imgname:{objectkey_}") if objectkey.split('.')[-1] in ['png', 'jpg']: resp = obsClient.putFile(bucketName, objectkey_, image_file) logger.info(f"obs_zhanting:{resp}") app = Flask(__name__) app.use_reloader=False parser = argparse.ArgumentParser() #parser.add_argument('--weights', nargs='+', type=str, default='runs/zhanting/yolov5m_finetune/exp4/weights/best.pt', help='model.pt path(s)') parser.add_argument('--weights', nargs='+', type=str, default='../module/ieemoo-ai-zhanting/model/now/best.pt', help='model.pt path(s)') parser.add_argument('--source', type=str, default='../module/ieemoo-ai-zhanting/imgs/1.jpg', help='source') # file/folder, 0 for webcam parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.70, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--view-img', type=bool, default=True, help='display results') parser.add_argument('--save-txt', type=bool, default=False, help='save results to *.txt') parser.add_argument('--save-conf', type=bool, default=True, help='save confidences in --save-txt labels') parser.add_argument('--nosave', type=bool, default=True, help='do not save images/videos') parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3') parser.add_argument('--agnostic-nms', type=bool, default=True, help='class-agnostic NMS') parser.add_argument('--augment', type=bool, default=True, help='augmented inference') parser.add_argument('--update', type=bool, default=True, help='update all models') parser.add_argument('--project', default='runs/detect', help='save results to project/name') parser.add_argument('--name', default='exp', help='save results to project/name') parser.add_argument('--exist-ok', type=bool, default=True, help='existing project/name ok, do not increment') #opt = parser.parse_args() opt, unknown = parser.parse_known_args() @app.route("/zhanting", methods=['POST']) def get_isempty(): start = time.time() data = request.get_data() ip = request.remote_addr logger.info(f"client ip:{ip}") json_data = json.loads(data.decode("utf-8")) # getdateend = time.time() # print('get date use time: {0:.2f}s'.format(getdateend - start)) pic = json_data.get("pic") result = {"success": "false", "rst_cls": '-1', } try: imgdata = base64.b64decode(pic) #image_path = 'imgs/1.jpg' image_path = '../module/ieemoo-ai-zhanting/imgs/1.jpg' file = open(image_path, 'wb') file.write(imgdata) # #mask # img = cv2.imread(image_path) # site = np.array([[[0, 1024], [0, 571], [313, 365], [949, 367], [1277, 596], [1280, 1024]]], dtype=np.int32) # im = np.zeros(img.shape[:2], dtype="uint8") # cv2.polylines(im, site, 1, 255) # cv2.fillPoly(im, site, 255) # mask = im # masked = cv2.bitwise_or(img, img, mask=mask) # img0 = masked # cv2.imwrite("../module/ieemoo-ai-zhanting/imgs/1.jpg",img0) pred = detect.detect(opt) logger.info(pred) Obs(image_path) logger.info("all time:%.3fs" % (time.time() - start)) #print('pred', pred) #getdateend = time.time() #now_time = datetime.datetime.now() #print('now_time', now_time) #print('get date use time: {0:.2f}s'.format(getdateend - start)) except Exception as e: logger.warning(e) return pred return pred if __name__ == "__main__": app.run() # app.run(host='192.168.1.142', port=8009) #http_server = WSGIServer(('0.0.0.0', 8000), app) #http_server.serve_forever()