Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python/PIL查找图像组件_Python_Pillow - Fatal编程技术网

使用python/PIL查找图像组件

使用python/PIL查找图像组件,python,pillow,Python,Pillow,PIL/Pillow中是否有一个功能,用于灰度图像,将图像分割为包含组成原始图像的组件的子图像?例如,包含一组块的png灰度图像。在这里,图像类型始终与背景具有高对比度 我不想使用openCV,我只需要一些普通的斑点检测,希望枕头/PIL可能已经有了这样的功能。是的,这是可能的。您可以在PIL中使用边缘检测算法。 示例代码: from PIL import Image, ImageFilter image = Image.open('/tmp/sample.png').convert('RGB'

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


我不想使用openCV,我只需要一些普通的斑点检测,希望枕头/PIL可能已经有了这样的功能。

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

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:

output.png:


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

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:

output.png:


不使用PIL,但值得一看我认为: 我从导入为
numpy
数组的图像文件列表开始,创建一个布尔版本列表,其中
阈值
>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)

不使用PIL,但值得一看我认为: 我从导入为
numpy
数组的图像文件列表开始,创建一个布尔版本列表,其中
阈值
>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)

那你到底想做什么呢?你的图像是什么样子的?您需要提供一些额外的信息,最好是提供一些代码示例,说明您已经在问的问题,即PIL/Pillow中是否有可能执行此功能。我已经说得很清楚了,我没有有效的代码。没有神奇的
do\u what\u I\u want()
函数。你需要详细说明。一般来说,如果你说你有很好的对比度,那么从阈值开始。像
floodfill
这样的标签算法可以识别不同的斑点,然后您可以只计算边界框。我使用了skimage.measure import label中的
,regionprops
,它允许您构造一些东西来识别区域并用递增整数标记它们(数组
必须是
布尔值
,因此您必须选择一个阈值来生成它)。那么,你到底想做什么?你的图像看起来像什么?你需要提供一些额外的信息,最好是提供一些你已经尝试过的代码示例。我特别想问的是,PIL/Pillow中是否有可能执行此操作的函数。我已经明确表示,我没有可用的代码。没有神奇的
做我想要的()
函数。你需要详细说明。一般来说,如果你说你有很好的对比度,那么就从阈值开始。像
泛光填充
这样的标签算法可以识别不同的斑点,然后你就可以计算边界框。我使用了skimage.measure import label中的
,regionprops
,它允许你构造一些这将标识区域并用递增整数标记它们(数组必须是布尔值,因此您必须选择一个阈值来生成它)。当有更多矩形时,OP如何提取矩形?您如何识别找到矩形的区域?当有更多矩形时,OP如何提取矩形?您如何识别找到矩形的区域?