说明
1、Sobel算子的中文名称是索贝尔算子,是一种用于边缘检测的离散微分算子。
它结合了高斯平滑和微分求导。
2、Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离对当前像素点有不同的影响。
像素点越近,对当前像素的影响就越大,从而锐化图像,突出边缘轮廓。
实例
importcv2ascv importmatplotlib.pyplotasplt #读取图像 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] foriinrange(2): plt.subplot(1,2,i+1),plt.imshow(images[i],'gray') plt.title(titles[i]) plt.xticks([]),plt.yticks([]) plt.show()
以上就是Sobel算子在python中,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。