Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB的Python实现&x27;斯坎尼过滤器_Python_Matlab_Opencv_Image Processing_Scikit Image - Fatal编程技术网

MATLAB的Python实现&x27;斯坎尼过滤器

MATLAB的Python实现&x27;斯坎尼过滤器,python,matlab,opencv,image-processing,scikit-image,Python,Matlab,Opencv,Image Processing,Scikit Image,在MATLAB中调用以下函数将Canny过滤器应用于图像: edges = edge(image, 'Canny'); 我知道有两个Python函数实现Canny过滤器: import cv2 edges = cv2.Canny(image) 及 但是,这两个Python函数都不能像MATLAB那样计算过滤器的高阈值和低阈值。根据, 。默认的MATLAB算法[生成]两个阈值,使得高阈值被计算为不超过30%的像素被检测为边缘的最低值,低阈值被定义为高阈值的40% 是否有Python实现可以做

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

edges = edge(image, 'Canny');
我知道有两个Python函数实现Canny过滤器:

import cv2

edges = cv2.Canny(image)

但是,这两个Python函数都不能像MATLAB那样计算过滤器的高阈值和低阈值。根据,

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


是否有Python实现可以做到这一点?

您应该首先将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()

scikit图像源在这里:它应该很容易适应做你想做的事情。@StefanvanderWalt你们对这种效果的拉取请求感兴趣吗?有很多matlab用户正在过渡到python,因此我确实认为这方面的需求相当广泛,但我想知道,如果您不希望有没有独立理由复制matlab的代码,我想如果这是一个有用的功能,我们没有理由不实现它。在这样做时,请注意不要查看任何在不同许可证下编写的代码。感谢您的贡献!我已编辑了您的答案,以使用正确的格式。您可以随时更新您的答案以进一步改进它。请看一看我对格式做了什么,并记下它作为下一个答案。可以使用标记的子集进行格式设置。此外,编辑器窗口顶部的按钮将插入这些格式元素。我在退出时有点做错了,请随时纠正!我看不出这是如何回答这个问题的。
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()