说明
1、Sobel算子的中文名称是索贝尔算子,是一种用于边缘检测的离散微分算子。
它结合了高斯平滑和微分求导。
2、Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离对当前像素点的影响是不同的。
距离越近的像素点对当前像素的影响越大,从而锐化图像,突出边缘轮廓。
实例
import cv2 as cv import matplotlib.pyplot as plt # 读取图像 img = cv.imread('data.jpg', cv.COLOR_BGR2GRAY) rgb_img = cv.cvtColor(img, cv.COLOR_BGR2RGB) # 灰度化处理图像 grayImage = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # Sobel 算子 x = cv.Sobel(grayImage, cv.CV_16S, 1, 0) y = cv.Sobel(grayImage, cv.CV_16S, 0, 1) # 转 uint8 ,图像融合 absX = cv.convertScaleAbs(x) absY = cv.convertScaleAbs(y) Sobel = cv.addWeighted(absX, 0.5, absY, 0.5, 0) # 用来正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示图形 titles = ['原始图像', 'Sobel 算子'] images = [rgb_img, Sobel] for i in range(2): plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray') plt.title(titles[i]) plt.xticks([]), plt.yticks([]) plt.show()
以上就是python中Sobel算子,希望对大家有所帮助。更多Python学习指路:
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。