prewitt算子,利用prewitt算子计算梯度
说明
1.Prewitt算子是一种用于边缘检测的一阶微分算子,利用一个像素的上、下、左、右邻居的灰度差在边缘处达到极值来检测边缘。
去除了一些伪边缘,可以平滑噪声。
2.Prewitt算子使用33个模板来计算该区域的像素值。
而Robert算子有22个模板,因此Prewitt算子的边缘检测结果在水平和垂直方向都比Robert算子更明显。Prewitt算子适用于识别噪声大、渐变的图像。
实例
importcv2ascv
importnumpyasnp
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)
#Prewitt算子
kernelx=np.array([[1,1,1],[0,0,0],[-1,-1,-1]],dtype=int)
kernely=np.array([[-1,0,1],[-1,0,1],[-1,0,1]],dtype=int)
x=cv.filter2D(灰度图像,cv。CV_16S,kernelx)
y=cv.filter2D(灰度图像,cv。CV_16S,kernely)
#转向uint8,图像融合
absX=cv.convertScaleAbs(x)
absY=cv.convertScaleAbs(y)
Prewitt=cv.addWeighted(absX,0.5,absY,0.5,0)
#用于正常显示中文标签。
PLT . RC params[ font . sans-serif ]=[ sim hei ]
#显示图形
Titles=[原始图像, Prewitt运算符]
images=[rgb_img,Prewitt]
(2):
plt.subplot(1,2,i 1),plt.imshow(images[i], gray )
plt.title(标题[i])
plt.xticks([]),plt.yticks([])
Plt.show()以上是对python中Prewitt运算符的理解。希望对你有帮助。更多python学习方向:Python基础课程
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。