2024-06-14 06:00:47 发布
网友
我知道这个边缘检测问题以前已经被提出过(在Java中是Count the number of objects in an Image,独立于语言的是Image edge detection),但是我想知道如何在python中实现它。
我在一些简单的形状上做边缘检测和曲率计算(带有一些噪声的二元形状)。我知道OpenCV有一些包装器,但不确定哪个更好:pyopencv,pycv,pycvf?
因为我基本上只做这两个任务,所以我也不确定自己实现它是否比使用库更快。
使用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)
这里是原始图像和边缘检测后的图像的一个例子。
在scikit图像中,有一个special page with explanations如何进行边缘检测。
我们在积极开发的scikit-image中提供了分割和边缘检测算法,您可能会发现这些算法很有用:
scikit-image
Scikit Images Examples
使用scikit图像在python中查找轮廓有一种非常简单的方法。实际上只是几行代码,如下所示:
这将返回等高线的矢量表示。在每行的单独数组中。通过计算一个近似值也很容易减少直线上的点数。这里有一个更长的源代码描述:image vectorization with python
使用python中的scipy可以轻松实现边缘检测。
这里是原始图像和边缘检测后的图像的一个例子。
在scikit图像中,有一个special page with explanations如何进行边缘检测。
我们在积极开发的
scikit-image
中提供了分割和边缘检测算法,您可能会发现这些算法很有用:Scikit Images Examples
相关问题 更多 >
编程相关推荐