• 技术文章 >Python技术 >Python基础教程

    python中Prewitt算子如何理解

    小妮浅浅小妮浅浅2021-08-30 09:28:50原创4058

    说明

    1、Prewitt算子是一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘达到极值检测边缘。

    去除部分伪边缘,对噪声有平滑作用。

    2、Prewitt算子使用33个模板来计算该区域的像素值。

    而Robert算子的模板是22个,所以Prewitt算子的边缘检测结果在水平和垂直方向上比Robert算子更明显。Prewitt算子适用于识别噪音大、灰度渐变的图像。

    实例

    import cv2 as cv
        import numpy as np
        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)
        
        # 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(grayImage, cv.CV_16S, kernelx)
        y = cv.filter2D(grayImage, cv.CV_16S, kernely)
        
        # 转 uint8 ,图像融合
        absX = cv.convertScaleAbs(x)
        absY = cv.convertScaleAbs(y)
        Prewitt = cv.addWeighted(absX, 0.5, absY, 0.5, 0)
        
        # 用来正常显示中文标签
        plt.rcParams['font.sans-serif'] = ['SimHei']
        
        # 显示图形
        titles = ['原始图像', 'Prewitt 算子']
        images = [rgb_img, Prewitt]
        
        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中Prewitt算子的理解,希望对大家有所帮助。更多Python学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python prewitt
    上一篇:python中Roberts算子是什么 下一篇:python中Sobel算子是什么

    相关文章推荐

    • python中htmlparser解析html• python中值传递和引用传递的区别• python位置参数如何使用• python位置参数的使用注意• python默认参数如何使用• python定义可变参数的两种形式• python逆向参数收集是什么• python函数如何返回多个值• reload在python中的使用• python中socket如何建立服务器• python中socket建立客户连接• python中Roberts算子是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网