zoukankan      html  css  js  c++  java
  • OpenCV常用基本处理函数(6)图像梯度

    形态学转换

    腐蚀

    img = cv2.imread('j.png',0)
    kernel = np.ones((5,5),np.uint8)
    erosion = cv2.erode(img,kernel,iterations = 1)

    膨胀

    dilation = cv2.dilate(img,kernel,iterations = 1)

    先进性腐蚀再进行膨胀就叫做开运算。就像我们上面介绍的那样,它被用来去除噪声。这里我们用到的函数是 cv2.morphologyEx()。

    opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

    图像梯度

    梯度简单来说就是求导,对于像素点的分布曲线求导,然后在像素变化较大的地方即为边缘,通过求导可以求出边缘的位置。

    OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr 和 Laplacian

    Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对 Sobel(使用小的卷积核求解求解梯度角度时)的优化。Laplacian 是求二阶导数。

    laplacian = cv2.Laplacian(img,cv2.CV_64F)
    sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
    sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)

    效果如图:

    Candy边缘检测

    1.去除噪声,高斯核

    2.计算梯度

    3.进行运算

    4.非极大值抑制

    5.设置两个阈值(图像的灰度梯度高于 maxVal 时被认为是真的边界,那些低于 minVal 的边界会被抛弃。如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是就抛弃)

    在OpenCV中通过cv2.Canny()来进行,这个函数的第一个参数是输入图像。第二和第三个分别是 minVal 和 maxVal。第三个参数设置用来计算图像梯度的 Sobel卷积核的大小,默认值为 3。最后一个参数是 L2gradient,它可以用来设定求梯度大小的方程。如果设为 True,就会使用我们上面提到过的方程,否则使用方程:Edge\_Gradient ; (G) = |G_x| + |G_y|. 代替,默认值为 False。

    例如:

    edges = cv2.Canny(img,100,200)


    参考自: 参考自:https://www.cnblogs.com/Undo-self-blog/p/8439149.html
  • 相关阅读:
    表设计二,联接查询
    表设计一,联接查询
    聚合函数,更新和删除
    Asp.Net MVC项目中如何调试ActiveX插件
    vs2019发布Web到云服务器(IIS)
    event.getRawX()和event.getX()的区别
    android 设备标识
    依赖注入那些事儿
    关于心跳包
    TCP的三次握手(建立连接)和四次挥手(关闭连接)
  • 原文地址:https://www.cnblogs.com/ywheunji/p/10990150.html
Copyright © 2011-2022 走看看