使用python/PIL查找图像组件
PIL/Pillow中是否有一个功能,用于灰度图像,将图像分割为包含组成原始图像的组件的子图像?例如,包含一组块的png灰度图像。在这里,图像类型始终与背景具有高对比度使用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'
我不想使用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如何提取矩形?您如何识别找到矩形的区域?