OpenCV中常用的边缘检测算子有以下几种:
-
Canny边缘检测算子
- 原理:Canny算子是一种多阶段边缘检测算法,首先通过高斯滤波器对图像进行平滑,然后计算图像梯度的幅值和方向,接着使用非最大值抑制来提取局部最大幅值点,最后使用双阈值及连接操作来检测和连接边缘。
- 作用:Canny边缘检测算子能够有效地检测出图像中的边缘,并且对噪声具有一定的抵抗性。
- 代码例子:
import cv2 img = cv2.imread('image.jpg', 0) edges = cv2.Canny(img, 100, 200) cv2.imshow('Original Image', img) cv2.imshow('Canny Edges', edges) cv2.waitKey(0) cv2.destroyAllWindows()
-
Sobel算子
- 原理:Sobel算子是一种基于图像梯度的边缘检测算子,通过计算图像灰度值的水平和垂直方向的一阶导数来获取图像梯度信息。
- 作用:Sobel算子可以检测出图像中的边缘,其结果是一个灰度图像,边缘处灰度值较大。
- 代码例子:
import cv2 img = cv2.imread('image.jpg', 0) edges_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) edges_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3) edges = cv2.bitwise_or(edges_x, edges_y) cv2.imshow('Original Image', img) cv2.imshow('Sobel Edges', edges) cv2.waitKey(0) cv2.destroyAll

最低0.47元/天 解锁文章
657

被折叠的 条评论
为什么被折叠?



