使用python / PIL查找图像组件

时间:2016-09-07 06:13:57

标签: python pillow

PIL / Pillow中是否有一个功能,对于灰度图像,是否会将图像分离为包含构成原始图像的组件的子图像?例如,png灰度图像,其中包含一组块。在这里,图像类型始终与背景形成高对比度。

我不想使用openCV,我只需要一些普通的blob检测,并且希望Pillow / PIL可能已经有了这样做。

2 个答案:

答案 0 :(得分:0)

是的,有可能。您可以在PIL中使用edge检测算法。 示例代码:

from PIL import Image, ImageFilter
image = Image.open('/tmp/sample.png').convert('RGB')
image = image.filter(ImageFilter.FIND_EDGES)
image.save('/tmp/output.png') 

sample.png:

enter image description here

output.png:

enter image description here

答案 1 :(得分:0)

不使用PIL,但我认为值得一看: 我首先列出了我作为numpy数组列表导入的图像文件列表,然后创建了一个布尔版本列表,其中threshold> 0

from skimage.measure import label, regionprops
import numpy as np

bool_array_list= []

for image in image_files:
    bool_array = np.copy(image)
    bool_array[np.where(bool_array > 0)] = 1
    bool_array_list.append(bool_array)

img_region_list = []

然后我使用标签来识别不同的区域,使用8方向连接,regionprops为我提供了一系列指标,例如大小和位置。

for item in bool_array_list:
    tmp_region_list = regionprops(label(item, 
                                        connectivity=2
                                       )
                                 )
    img_region_list.append(tmp_region_list)