Python 边缘检测和曲率计算
我知道边缘检测的问题之前已经有人提过了(在Java中:统计图像中的物体数量,不特定语言:图像边缘检测),但我想知道怎么在Python中实现这个功能。
我正在对一些简单的形状进行边缘检测和边缘的曲率计算(这些形状是二进制的,还有一些噪声)。我知道有一些OpenCV的封装库,但不太确定哪个更好:pyopencv、pycv还是pycvf?
因为我基本上只做这两个任务,所以我也不确定自己实现会不会比使用库更快。
4 个回答
3
在Python中,用scikit-image库找到轮廓的方法非常简单。其实只需要几行代码,像这样:
from skimage import measure
contours = measure.find_contours(gimg, 0.8)
这段代码会返回轮廓线的向量表示,每条线都会有一个单独的数组。而且,如果你想减少一条线上的点的数量,可以通过计算一个近似值来实现。这里有一个稍微详细一点的说明和源代码:用Python进行图像向量化
6
你可以很简单地用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-image库中,有一个专门的页面,里面详细解释了如何进行边缘检测。
13
我们在正在积极开发的 scikit-image
库中,有一些分割和边缘检测的算法,你可能会觉得这些很有用: