Python 边缘检测和曲率计算

2024-06-14 06:00:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个边缘检测问题以前已经被提出过(在Java中是Count the number of objects in an Image,独立于语言的是Image edge detection),但是我想知道如何在python中实现它。

我在一些简单的形状上做边缘检测和曲率计算(带有一些噪声的二元形状)。我知道OpenCV有一些包装器,但不确定哪个更好:pyopencv,pycv,pycvf?

因为我基本上只做这两个任务,所以我也不确定自己实现它是否比使用库更快。


Tags: oftheinimagean语言numberobjects
3条回答

使用scikit图像在python中查找轮廓有一种非常简单的方法。实际上只是几行代码,如下所示:

    from skimage import measure
    contours = measure.find_contours(gimg, 0.8)

这将返回等高线的矢量表示。在每行的单独数组中。通过计算一个近似值也很容易减少直线上的点数。这里有一个更长的源代码描述:image vectorization with python

使用python中的scipy可以轻松实现边缘检测。

from scipy import ndimage
edge_horizont = ndimage.sobel(greyscale, 0)
edge_vertical = ndimage.sobel(greyscale, 1)
magnitude = np.hypot(edge_horizont, edge_vertical)

这里是原始图像和边缘检测后的图像的一个例子。enter image description here

在scikit图像中,有一个special page with explanations如何进行边缘检测。

我们在积极开发的scikit-image中提供了分割和边缘检测算法,您可能会发现这些算法很有用:

Scikit Images Examples

相关问题 更多 >