prewitt算子边缘检测代码
时间: 2024-12-15 22:27:42 浏览: 5
Prewitt算子是一种基于差分的边缘检测算子,在图像处理中常用于边缘检测。它实际上是两个3x3的模板矩阵,分别对应水平方向和平行于45度角的方向。下面是使用Python和OpenCV库实现Prewitt算子的基本步骤:
```python
import cv2
import numpy as np
# 加载图像
image = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE)
# 定义Prewitt算子
prewitt_horizontal = np.array([[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]])
prewitt_vertical = np.array([[-1, -1, -1], [0, 0, 0], [1, 1, 1]])
# 应用算子
sobel_x = cv2.filter2D(image, -1, prewitt_horizontal)
sobel_y = cv2.filter2D(image, -1, prewitt_vertical)
# 计算绝对值并合并结果
abs_sobel = cv2.bitwise_or(cv2.abs(sobel_x), cv2.abs(sobel_y))
# 转换为二值图像
threshold = 200 # 可调整阈值
edges = abs_sobel > threshold
edges = cv2.threshold(abs_sobel, threshold, 255, cv2.THRESH_BINARY)[1]
# 显示原图和边缘检测结果
cv2.imshow('Original Image', image)
cv2.imshow('Edges using Prewitt', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们首先对原始灰度图像应用Prewitt算子,然后计算每个方向的结果的绝对值,最后通过设定阈值将结果转换为二值图像以突出显示边缘。
阅读全文