OpenCV Canny 边缘检测
# Canny边缘检测
# 参数1: 输入图像(建议先模糊降噪)
# 参数2/3: 低/高阈值(低于低阈值的边缘被丢弃,高于高阈值的边缘保留)
# 可选参数:
# - apertureSize: Sobel算子大小(默认3)
# - L2gradient: 使用更精确的L2梯度计算(默认False用L1)
canny = cv.Canny(blur, 125, 175, apertureSize=5, L2gradient=True)
参数 | 推荐值/范围 | 核心作用 | 调整影响 |
---|---|---|---|
低阈值 | 高阈值的 0.3~0.5 倍 | 过滤弱边缘 | 过低 → 噪声增多;过高 → 边缘断裂断裂风险增加 |
高阈值 | 梯度幅值最大值的 0.7 倍 | 确定强边缘 | 过低 → 边缘过厚;过高 → 有效边缘丢失风险增加 |
孔径大小 ( apertureSize ) | 3(默认)/5/7 | 控制 Sobel 算子的梯度计算精度 | 越大 → 边缘连续性更好,但计算量增大;越小 → 实时性更高 |
L2梯度标志 ( L2gradient ) | True(精度优先) | 选择梯度幅值计算方法 | True → 更精确(L2范数);False → 更快(L1范数) |
模糊核大小 (预处理) | (3,3)~(7,7) | 高斯平滑降噪 | 越大 → 噪声抑制更强,但细节丢失风险增加 |