Add functionality for dark images.
Browse files
app.py
CHANGED
|
@@ -68,6 +68,21 @@ def build_model(hypar,device):
|
|
| 68 |
net.eval()
|
| 69 |
return net
|
| 70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
|
| 72 |
def predict(net, inputs_val, shapes_val, hypar, device):
|
| 73 |
'''
|
|
@@ -129,11 +144,14 @@ def inference(image):
|
|
| 129 |
|
| 130 |
pil_mask = Image.fromarray(mask).convert('L')
|
| 131 |
im_rgb = Image.open(image).convert("RGB")
|
|
|
|
|
|
|
| 132 |
|
| 133 |
im_rgba = im_rgb.copy()
|
| 134 |
im_rgba.putalpha(pil_mask)
|
|
|
|
| 135 |
|
| 136 |
-
return [im_rgba, pil_mask]
|
| 137 |
|
| 138 |
|
| 139 |
title = "Mysign.id - Signature Background removal based on DIS"
|
|
|
|
| 68 |
net.eval()
|
| 69 |
return net
|
| 70 |
|
| 71 |
+
|
| 72 |
+
def crop_to_signature(mask):
|
| 73 |
+
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
| 74 |
+
if contours:
|
| 75 |
+
# Assume the largest contour is the signature
|
| 76 |
+
x, y, w, h = cv2.boundingRect(max(contours, key=cv2.contourArea))
|
| 77 |
+
# Add some padding to the bounding box
|
| 78 |
+
padding = 32
|
| 79 |
+
x, y, w, h = x-padding, y-padding, w+2*padding, h+2*padding
|
| 80 |
+
# Crop the mask
|
| 81 |
+
cropped_mask = mask[y:y+h, x:x+w]
|
| 82 |
+
return cropped_mask
|
| 83 |
+
else:
|
| 84 |
+
return mask # Return the original mask if no contours are found
|
| 85 |
+
|
| 86 |
|
| 87 |
def predict(net, inputs_val, shapes_val, hypar, device):
|
| 88 |
'''
|
|
|
|
| 144 |
|
| 145 |
pil_mask = Image.fromarray(mask).convert('L')
|
| 146 |
im_rgb = Image.open(image).convert("RGB")
|
| 147 |
+
im_dark = Image.new('RGB', im_rgb.size, (0, 0, 0))
|
| 148 |
+
|
| 149 |
|
| 150 |
im_rgba = im_rgb.copy()
|
| 151 |
im_rgba.putalpha(pil_mask)
|
| 152 |
+
im_dark.putalpha(pil_mask)
|
| 153 |
|
| 154 |
+
return [im_rgba, pil_mask, im_dark]
|
| 155 |
|
| 156 |
|
| 157 |
title = "Mysign.id - Signature Background removal based on DIS"
|