MATLAB的Canny过滤器的Python实现

时间:2015-05-17 02:57:11

标签: python matlab opencv image-processing scikit-image

在MATLAB中调用以下函数将Canny滤镜应用于图像:

edges = edge(image, 'Canny');

我知道有两个实现Canny过滤器的Python函数:

import cv2

edges = cv2.Canny(image)

from skimage import feature

edges = feature.canny(image)

但是,这些Python函数都不能以与MATLAB相同的方式计算滤波器的高阈值和低阈值。根据{{​​3}},

  

。 。 。默认的MATLAB算法[生成]两个阈值,使得高阈值被计算为不超过30%的像素被检测为边缘的最低值,低阈值被定义为高阈值的40%

是否有可以执行此操作的Python实现?

1 个答案:

答案 0 :(得分:1)

您应该首先将Canny参数传递给canny(),然后在您的Python代码中运行它

im:图片名称
下限阈值:
上限:

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('lena.png')
edges = cv2.Canny(img,....,....,L2gradient=False/True)

plt.imshow(edges,cmap='gray')
plt.show()