prewitt算子,利用prewitt算子计算梯度

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: