首页 > 解决方案 > 从分割的图像中选择一些对象

问题描述

我有一个像下面这样的分割图像,其中每个对象都有不同的像素值(即实例分割。这是使用 skimage.measure.label 实现的。如何从该图像中选择特定对象。例如,我会喜欢所有对象标记为 11、12 和 13 以保留其标签或标记为 1,而其他所有内容都将分配像素值 0。 在此处输入图像描述

标签: pandasimagenumpyimage-segmentationscikit-image

解决方案


你可以很简单地用 Numpy 做到这一点:

#!/usr/bin/env python3

import numpy as np
from PIL import Image

im = Image.open('start.png').convert('L')
na = np.array(im)

# Make any pixel less than 11 or greater than 13 become zero
na[(na<11) | (na>13)] = 0
Image.fromarray(na).save('result1.png')

# Reload unmodified image for second method
na  = np.array(im)
# Make any pixel outside range black, any pixel in range white
res = np.where(((na<11) | (na>13)), 0, 255).astype(np.uint8)
Image.fromarray(res).save('result2.png')

开始图像

在此处输入图像描述

结果1

在此处输入图像描述

结果2

在此处输入图像描述


推荐阅读