canny算法

使用简单二值分布的问题:检测到的边缘过厚;很难确定阈值

canny算子基于sobel算子,类似于为sobel返回的图像添加两个阈值;

canny(

image,

dst,

低阈值,

高阈值)

在滞后阈值化之前,如果检测到梯度幅值不是梯度方向最大值,那么对应的边缘点被移除,这也是为什么边缘可以变薄

滞后阈值化;

霍夫变换检测直线;((2条消息) 有关opencv的学习(22)—霍夫变换及应用_一粒菜鸟的学习日记的博客-CSDN博客_霍夫变换的应用

void HoughLines(InputArray image,OutputArray lines,

                                   double rho,double theta, int threshold,

                                   double srn=0,double stn=0 );

src:输入原图像(一般为8位单通道二值图像);
lines: 经过霍夫变换后检测线条的输出矢量, 每一条线由两个元素的矢量(ρ, Θ)表示, 其中ρ是离坐标原点的距离, Θ是弧度线条旋转角度(0表示垂直线, π/2度表示水平线);
rho: 以像素为单位的距离精度, 另一种表述方式是直线搜索时的进步尺寸的单位半径;
theta: 以弧度为单位的角度精度, 另一种表述方式是直线搜索时的进步尺寸的角度单位;
threshold: 累加平面的阈值参数, 即识别某部分为一条直线时它在累加平面中必须达到的值, 大于阈值threshold的线段才可以被检测通过并返回到结果中;
srn: 默认值0, 对于多尺度的霍夫变换, 这是第三个参数进步尺寸rho的除数距离;
stn: 默认值0, 对于多尺度霍夫变换, 表示单位角度theta;

上一篇:OpenCV C++ 实时视频canny边缘检测


下一篇:Docker下运行ORB-Slam2