Canny

简介: Canny

在 OpenCV 中,cv2.Canny 函数是一个高效的边缘检测算法,它通过简单的一行代码实现了对图像边缘的检测。下面是对 cv2.Canny 函数参数的清晰解释:

  • Pic:这是待检测边缘的图像对象,通常应该是灰度图像。

  • Minval:这是最小的灰度梯度阈值。图像中的像素点,如果其梯度值低于 Minval,将被视为非边缘像素,即它们不会被包含在最终的边缘图中。

  • Maxval:这是最大的梯度阈值。如果像素点的梯度值高于 Maxval,则该点被确认为边缘像素。梯度值介于 MinvalMaxval 之间的像素点,只有当它们与高于 Maxval 的梯度值的像素点相连时,才被包含在边缘图中,否则它们将被排除。

Canny 算法的工作原理包括几个步骤:首先,它使用高斯滤波器对图像进行平滑处理,以去除噪声。然后,它计算图像的梯度幅度和方向。接下来,使用非极大值抑制来将梯度方向上不是局部最大值的像素点移除。最后,通过双阈值检测和连接边缘片段,生成最终的边缘图。

下面是使用 cv2.Canny 函数的一个简单示例:

import cv2
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('path_to_image', cv2.IMREAD_GRAYSCALE)

# 使用 Canny 算法检测边缘
edges = cv2.Canny(image, minVal=50, maxVal=150)

# 显示原始图像和边缘检测结果
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_GRAY2BGR))
plt.title('Original Image')

plt.subplot(1, 2, 2)
plt.imshow(cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR))
plt.title('Edge Detected')

plt.show()

在这个示例中,我们首先以灰度模式读取图像,然后使用 cv2.Canny 函数进行边缘检测,并通过 matplotlib 库展示原始图像和检测到的边缘。minValmaxVal 的选择取决于图像的特性和所需的边缘检测敏感度。

目录
相关文章
|
7月前
|
计算机视觉
OpenCV-高斯滤波cv::GaussianBlur
OpenCV-高斯滤波cv::GaussianBlur
|
3天前
|
计算机视觉 Python
Laplacian()、Sobel()以及 Scharr()。
Laplacian()、Sobel()以及 Scharr()。
19 1
|
3天前
|
算法 计算机视觉 Python
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
|
7月前
|
计算机视觉
OpenCV-中值滤波cv::medianBlur
OpenCV-中值滤波cv::medianBlur
|
7月前
|
计算机视觉
OpenCV-腐蚀cv::erode
OpenCV-腐蚀cv::erode
|
9月前
|
计算机视觉
opencv之 边缘检测(canny)
opencv之 边缘检测(canny)
|
5月前
|
算法 计算机视觉
1.Opencv_Canny(),边缘检测详解
1.Opencv_Canny(),边缘检测详解
27 0
|
7月前
|
算法
OpenCV-Canny边缘检测
OpenCV-Canny边缘检测
|
7月前
OpenCV-Sobel边缘检测
OpenCV-Sobel边缘检测
|
7月前
|
计算机视觉
OpenCV-Laplacian边缘检测
OpenCV-Laplacian边缘检测