Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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
如何使用Python创建可引导的边缘检测过滤器或丢弃不符合所需角度的边缘_Python_Opencv_Canny Operator - Fatal编程技术网

如何使用Python创建可引导的边缘检测过滤器或丢弃不符合所需角度的边缘

如何使用Python创建可引导的边缘检测过滤器或丢弃不符合所需角度的边缘,python,opencv,canny-operator,Python,Opencv,Canny Operator,我知道如何使用OpenCV进行基本的Canny边缘检测。但是,我需要丢弃所有不在预定角度15度范围内的边 任何帮助都将不胜感激。这是一个老问题,但以下是您应该使用的流程 1] 首先过滤源图像背景减法/颜色/等等 2] 应用一个通用的边缘检测器或一个可控制的过滤器,或者如果你想得到一些非常好的结果&你是为了研究目的而这样做的,寻找 3] 将这些行保存在一个向量中 4] 创建一个圆的绘制算法是这里的主要思想 圆绘制算法CDA将进一步获取边过滤器返回的每个点 对于每个点,它将根据同一直线上两个点可接受

我知道如何使用OpenCV进行基本的Canny边缘检测。但是,我需要丢弃所有不在预定角度15度范围内的边


任何帮助都将不胜感激。

这是一个老问题,但以下是您应该使用的流程

1] 首先过滤源图像背景减法/颜色/等等

2] 应用一个通用的边缘检测器或一个可控制的过滤器,或者如果你想得到一些非常好的结果&你是为了研究目的而这样做的,寻找

3] 将这些行保存在一个向量中

4] 创建一个圆的绘制算法是这里的主要思想

圆绘制算法CDA将进一步获取边过滤器返回的每个点

对于每个点,它将根据同一直线上两个点可接受的最大/最小距离,构建直径可变的圆[Dmin;Dmax]

如果在与角度对应的圆八分之一中没有下一个像素,只需将其忽略即可

一旦你们有了和你们的角度相匹配的线条,你们就可以按长度对它们进行排序,以消除可能由于噪音而产生的线条

您还应注意,还有其他方法,此方法是一个很好的方面:

1-对噪音和低质量图像/视频的鲁棒性

2-其CUDA兼容,即易于推入并行处理

3-其速度快且大致比大多数基线检测器更准确