python
复制代码
# 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) |
高斯平滑降噪 |
越大 → 噪声抑制更强,但细节丢失风险增加 |