使用Robert算子、sobel算子、prewitt算子分别进行边缘检测的python代码
时间: 2023-12-30 17:02:32 浏览: 96
以下是使用Robert算子、Sobel算子、Prewitt算子进行边缘检测的Python代码:
使用Robert算子进行边缘检测:
```
import cv2
img = cv2.imread('image.jpg', 0)
# Robert算子
roberts_cross_v = np.array([[0, 0, 0], [0, 1, 0], [0, 0, -1]])
roberts_cross_h = np.array([[0, 0, 0], [0,0, 1], [0, -1, 0]])
vertical = cv2.filter2D(img, -1, roberts_cross_v)
horizontal = cv2.filter2D(img, -1, roberts_cross_h)
roberts_cross = vertical + horizontal
cv2.imshow('Robert Cross', roberts_cross)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
使用Sobel算子进行边缘检测:
```
import cv2
img = cv2.imread('image.jpg', 0)
# Sobel算子
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5)
sobel = cv2.bitwise_or(sobelx, sobely)
cv2.imshow('Sobel', sobel)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
使用Prewitt算子进行边缘检测:
```
import cv2
img = cv2.imread('image.jpg', 0)
# Prewitt算子
kernelx = np.array([[1, 1, 1], [0, 0, 0], [-1, -1, -1]])
kernely = np.array([[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]])
prewittx = cv2.filter2D(img, -1, kernelx)
prewitty = cv2.filter2D(img, -1, kernely)
prewitt = cv2.bitwise_or(prewittx, prewitty)
cv2.imshow('Prewitt', prewitt)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文