使用python/PIL的图像轮廓
像这样的东西应该工作。
from PIL import Image, ImageFilter
image = Image.open('your_image.png')
image = image.filter(ImageFilter.FIND_EDGES)
image.save('new_name.png')
如果不给你你正在寻找的,那么你尝试实现要么普鲁伊特边缘检测,Sobel边缘检测或Canny边缘检测使用PIL和Python等图书馆见相关question及以下example结果。
如果你正在尝试做的粒子检测/分析,而不仅仅是边缘检测,你可以尝试使用py4ij给你打电话链接ImageJ的方法给你所期望的结果相同,或尝试其它颗粒分析Python库EMAN交替你可以使用PIL,SciPy和NumPy编写粒子检测算法。
嗨, 照片是彩色的,甚至当我灰化他们和运行过滤器它不能正常工作,因为我只是想要苹果形状的轮廓,这有可能吗? 它类似于rsbweb.nih.gov/ij/docs/pdfs/examples.pdf中描述的imageJ方法。 谢谢 – user1212200 2012-02-17 14:53:30
@ Appleman1234,非常感谢你提及我的文章。嘿,你可以导入Canny边缘检测模块并运行它来单独查找边缘。输出将是一个numpy的ndarray,但你可以使用im = Image.fromarray(imarray) – Vishwanath 2012-02-20 14:48:46
@Appleman将图像转换为基于FIND_EDGES的组件分解成PIL图像? – user1658296 2016-08-31 07:46:05
如果你的对象和背景都相当不错对比
from PIL import Image
image = Image.open(your_image_file)
mask=image.convert("L")
th=150 # the value has to be adjusted for an image of interest
mask = mask.point(lambda i: i < th and 255)
mask.save(file_where_to_save_result)
如果更高的对比度是在一个(3种颜色),您可将图像分割成多个频带,而不是将其转换为灰度。
如果图像或背景是相当复杂的,更复杂的处理将需要
包括预期输入的一些样本图像。 – mmgp 2012-12-15 20:00:24