OpenCV Canny 边缘检测

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