opencv cv2.Canny
时间: 2024-06-14 22:06:58 浏览: 113
cv2.Canny()函数是OpenCV中的边缘检测函数之一,用于检测图像的边缘。它的基本原理是通过计算图像中每个像素点的梯度值来检测边缘。具体来说,它的实现步骤如下:
1. 对输入图像进行高斯滤波,以平滑图像并去除噪声。
2. 计算图像的梯度,找到像素点处灰度值变化最大的方向和大小。
3. 应用非极大值抑制(Non-maximum Suppression),以消除可能出现的重复边缘。
4. 应用双阈值(Double Thresholding)来检测和连接边缘。
cv2.Canny()函数的语法如下:
```python
cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges
```
其中,image是输入图像,threshold1和threshold2是阈值参数,用于确定边缘的强度。所有梯度值高于threshold2的像素点都被认为是真正的边缘点,而所有梯度值低于threshold1的像素点都被认为不是边缘点。在两个阈值之间的像素点被视为潜在的边缘点。apertureSize是Sobel算子的孔径大小,默认为3。L2gradient是一个布尔值,用于指定计算梯度幅值的方法,默认为False。
以下是一个使用cv2.Canny()函数进行边缘检测的示例:
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
cv2.imshow('Original Image', img)
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个示例中,首先读取一张图像,然后将其转换为灰度图像。接下来,使用cv2.Canny()函数对灰度图像进行边缘检测,并将结果显示出来。
阅读全文