update mask2segments and saving results (#9785)
* update mask2segments and saving results * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update general.py Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> * Update predict.py Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
This commit is contained in:
1 file changed
+7
-4
@@ -126,9 +126,12 @@ def masks2segments(masks, strategy='largest'):
|
|||||||
segments = []
|
segments = []
|
||||||
for x in masks.int().cpu().numpy().astype('uint8'):
|
for x in masks.int().cpu().numpy().astype('uint8'):
|
||||||
c = cv2.findContours(x, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
|
c = cv2.findContours(x, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
|
||||||
if strategy == 'concat': # concatenate all segments
|
if c:
|
||||||
c = np.concatenate([x.reshape(-1, 2) for x in c])
|
if strategy == 'concat': # concatenate all segments
|
||||||
elif strategy == 'largest': # select largest segment
|
c = np.concatenate([x.reshape(-1, 2) for x in c])
|
||||||
c = np.array(c[np.array([len(x) for x in c]).argmax()]).reshape(-1, 2)
|
elif strategy == 'largest': # select largest segment
|
||||||
|
c = np.array(c[np.array([len(x) for x in c]).argmax()]).reshape(-1, 2)
|
||||||
|
else:
|
||||||
|
c = np.zeros((0, 2)) # no segments found
|
||||||
segments.append(c.astype('float32'))
|
segments.append(c.astype('float32'))
|
||||||
return segments
|
return segments
|
||||||
Reference in new issue
Block a user