freealise commited on
Commit
bab488d
·
verified ·
1 Parent(s): f364588

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -14
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
- #md = 12
169
- #if lm == "median":
170
- # mh = np.median(hsv[:,:,0])
171
- # ms = np.median(hsv[:,:,1])
172
- # md = np.median(hsv[:,:,2])
173
- #elif lm == "average":
174
- # mh = np.average(hsv[:,:,0])
175
- # ms = np.average(hsv[:,:,1])
176
- # md = np.average(hsv[:,:,2])
177
- #bg = cv2.inRange(hsv, np.array([0,0,0]), np.array([mh,ms,md]))
178
- #fr_diff[bg>0] = 0
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