Update app.py
Browse files
app.py
CHANGED
@@ -162,21 +162,18 @@ def remove_bg(fl, count, mh, ms, md, lm):
|
|
162 |
hsv = cv2.cvtColor(fr_diff, cv2.COLOR_BGR2HSV) # range: 180, 255, 255
|
163 |
|
164 |
fr_diff = cv2.cvtColor(fr_diff, cv2.COLOR_BGR2GRAY)
|
165 |
-
|
166 |
-
fr_diff = cv2.adaptiveThreshold(fr_diff,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,255,0)
|
167 |
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
#fr_diff[bg==0] = 255
|
180 |
|
181 |
cv2.rectangle(fr_diff,(0,0),(fr_diff.shape[1]-1,fr_diff.shape[0]-1),(255,255,255),1)
|
182 |
mask = cv2.floodFill(fr_diff, None, (0, 0), 255, 0, 0, (4 | cv2.FLOODFILL_FIXED_RANGE))[2] #(4 | cv.FLOODFILL_FIXED_RANGE | cv.FLOODFILL_MASK_ONLY | 255 << 8)
|
@@ -199,6 +196,11 @@ def remove_bg(fl, count, mh, ms, md, lm):
|
|
199 |
fr[m>0] = (16,16,16)
|
200 |
fr[fr_shadow>0] = (fr[fr_shadow>0] / 17).astype(np.uint8)
|
201 |
fr[fr_fg==0] = (255,255,255)
|
|
|
|
|
|
|
|
|
|
|
202 |
|
203 |
cv2.imwrite(fl, fr)
|
204 |
return fl
|
|
|
162 |
hsv = cv2.cvtColor(fr_diff, cv2.COLOR_BGR2HSV) # range: 180, 255, 255
|
163 |
|
164 |
fr_diff = cv2.cvtColor(fr_diff, cv2.COLOR_BGR2GRAY)
|
|
|
|
|
165 |
|
166 |
+
if lm == "median":
|
167 |
+
mh = np.median(hsv[:,:,0])
|
168 |
+
ms = np.median(hsv[:,:,1])
|
169 |
+
md = np.median(hsv[:,:,2])
|
170 |
+
elif lm == "average":
|
171 |
+
mh = np.average(hsv[:,:,0])
|
172 |
+
ms = np.average(hsv[:,:,1])
|
173 |
+
md = np.average(hsv[:,:,2])
|
174 |
+
bg = cv2.inRange(hsv, np.array([0,0,0]), np.array([mh,ms,md]))
|
175 |
+
fr_diff[bg>0] = 0
|
176 |
+
fr_diff[bg==0] = 255
|
|
|
177 |
|
178 |
cv2.rectangle(fr_diff,(0,0),(fr_diff.shape[1]-1,fr_diff.shape[0]-1),(255,255,255),1)
|
179 |
mask = cv2.floodFill(fr_diff, None, (0, 0), 255, 0, 0, (4 | cv2.FLOODFILL_FIXED_RANGE))[2] #(4 | cv.FLOODFILL_FIXED_RANGE | cv.FLOODFILL_MASK_ONLY | 255 << 8)
|
|
|
196 |
fr[m>0] = (16,16,16)
|
197 |
fr[fr_shadow>0] = (fr[fr_shadow>0] / 17).astype(np.uint8)
|
198 |
fr[fr_fg==0] = (255,255,255)
|
199 |
+
|
200 |
+
fr_fg[fr_fg>0] = 3 #probable fg
|
201 |
+
mask, bgdModel, fgdModel = cv2.grabCut(fr, fr_fg, None,None,None,15, cv2.GC_INIT_WITH_MASK)
|
202 |
+
mask = np.where((mask==2)|(mask==0),0,1).astype('uint8')
|
203 |
+
fr[mask==0] = (255,255,255)
|
204 |
|
205 |
cv2.imwrite(fl, fr)
|
206 |
return fl
|