oscarfu0501 commited on
Commit
beaeeb6
1 Parent(s): c730cc4

Upload handler.py

Browse files
Files changed (1) hide show
  1. handler.py +43 -33
handler.py CHANGED
@@ -6,58 +6,68 @@ import cv2
6
  import base64
7
  from inference_sdk import InferenceHTTPClient
8
 
9
- class EndpointHandler():
10
- def __init__(self, key): #pass api key to model
 
11
  pass
12
-
13
  def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
14
  inputs = data.get("inputs")
15
  isurl = inputs.get("isurl")
16
  path = inputs.get("path")
17
  key = inputs.get("key")
18
- ########################### Load Image #################################
19
- CLIENT = InferenceHTTPClient(
20
- api_url="https://detect.roboflow.com",
21
- api_key=key
22
- )
23
- if(isurl): # for url set isurl = 1
24
  req = urllib.request.urlopen(path)
25
  arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
26
- img = cv2.imdecode(arr, -1) # 'Load it as it is'
27
- else: # for image file
28
  img = cv2.imread(path)
29
- ###########################################################################
30
-
31
-
32
- ########################### Model Detection #################################
33
- # change model_id to use a different model
34
- # can try:
35
  # clothing-segmentation-dataset/1
36
  # t-shirts-detector/1
37
  # mainmodel/2
38
  result = CLIENT.infer(path, model_id="mainmodel/2")
39
  detections = sv.Detections.from_inference(result)
40
  # print(detections)
41
- ###########################################################################
42
-
43
 
44
- ########################### Data proccessing #################################
45
  # only pass the first detection
46
  # change 1 -> to len(detections.xyxy) to pass all photos
47
- if(detections.confidence.size == 0):
48
  return "Not Found"
49
  else:
50
- x1, y1, x2, y2 = int(detections.xyxy[0][0]), int(detections.xyxy[0][1]), int(detections.xyxy[0][2]), int(detections.xyxy[0][3])
51
- clothes = img[y1: y2, x1: x2]
52
- retval , buffer = cv2.imencode('.jpg', clothes)
 
 
 
 
 
53
  # create base 64 object
54
- jpg_as_text = base64.b64encode(buffer)
55
- ###########################################################################
56
  return jpg_as_text
57
- ###########################################################################
58
-
59
-
60
-
61
- # test run
62
- # Model = Image_detect("api key")
63
- # print(Model("test_images/test5.jpg", 0))
 
 
 
 
 
 
 
 
 
 
6
  import base64
7
  from inference_sdk import InferenceHTTPClient
8
 
9
+
10
+ class EndpointHandler:
11
+ def __init__(self): # pass api key to model
12
  pass
13
+
14
  def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
15
  inputs = data.get("inputs")
16
  isurl = inputs.get("isurl")
17
  path = inputs.get("path")
18
  key = inputs.get("key")
19
+ ########################### Load Image #################################
20
+ CLIENT = InferenceHTTPClient(api_url="https://detect.roboflow.com", api_key=key)
21
+ if isurl: # for url set isurl = 1
 
 
 
22
  req = urllib.request.urlopen(path)
23
  arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
24
+ img = cv2.imdecode(arr, -1) # 'Load it as it is'
25
+ else: # for image file
26
  img = cv2.imread(path)
27
+ ###########################################################################
28
+
29
+ ########################### Model Detection #################################
30
+ # change model_id to use a different model
31
+ # can try:
 
32
  # clothing-segmentation-dataset/1
33
  # t-shirts-detector/1
34
  # mainmodel/2
35
  result = CLIENT.infer(path, model_id="mainmodel/2")
36
  detections = sv.Detections.from_inference(result)
37
  # print(detections)
38
+ ###########################################################################
 
39
 
40
+ ########################### Data proccessing #################################
41
  # only pass the first detection
42
  # change 1 -> to len(detections.xyxy) to pass all photos
43
+ if detections.confidence.size == 0:
44
  return "Not Found"
45
  else:
46
+ x1, y1, x2, y2 = (
47
+ int(detections.xyxy[0][0]),
48
+ int(detections.xyxy[0][1]),
49
+ int(detections.xyxy[0][2]),
50
+ int(detections.xyxy[0][3]),
51
+ )
52
+ clothes = img[y1:y2, x1:x2]
53
+ retval, buffer = cv2.imencode(".jpg", clothes)
54
  # create base 64 object
55
+ jpg_as_text = base64.b64encode(buffer) # Decode bytes to string
56
+ ###########################################################################
57
  return jpg_as_text
58
+
59
+
60
+ ###########################################################################
61
+
62
+
63
+ # data = {
64
+ # "inputs": {
65
+ # "isurl": True,
66
+ # "path": "http://192.168.10.20/cam-hi.jpg",
67
+ # "key": "iJuYzEzNEFSaQq4e0hfE",
68
+ # }
69
+ # }
70
+
71
+ # # test run
72
+ # Model = EndpointHandler()
73
+ # print(Model(data))