canny边缘检测自适应双阈值 Python代码
时间: 2023-10-24 21:07:32 浏览: 306
以下是canny边缘检测自适应双阈值的Python代码:
```python
import cv2
import numpy as np
def auto_canny(image, sigma=0.33):
# 计算图像的中值
v = np.median(image)
# 计算低阈值和高阈值
lower = int(max(0, (1.0 - sigma) * v)))
upper = int(min(255, (1.0 + sigma) * v)))
# 使用计算出的阈值进行Canny边缘检测
edged = cv2.Canny(image, lower, upper)
# 返回结果
return edged
# 加载图像
image = cv2.imread("image.jpg")
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 对灰度图像进行高斯模糊
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
# 自适应双阈值Canny边缘检测
edged = auto_canny(blurred)
# 显示结果
cv2.imshow("Original Image", image)
cv2.imshow("Edged Image", edged)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们使用了一个名为`auto_canny`的函数来计算自适应双阈值,并使用这个函数对灰度图像进行Canny边缘检测。函数中的`sigma`参数用于控制双阈值的范围,默认值为0.33。我们还使用了`cv2.GaussianBlur`函数对灰度图像进行高斯模糊,以减少噪声对边缘检测的影响。最后,我们使用`cv2.imshow`函数显示原始图像和检测到的边缘。
阅读全文