zoukankan      html  css  js  c++  java
  • OpenCV--图像梯度处理

    图像梯度-Sobel算子

    img = cv2.imread('pie.png',cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img",img)
    cv2.waitKey()
    cv2.destroyAllWindows()

    效果:

    dst = cv2.Sobel(src, ddepth, dx, dy, ksize)

    ddepth:图像的深度
    dx和dy分别表示水平和竖直方向
    ksize是Sobel算子的大小

    def cv_show(img,name):
        cv2.imshow(name,img)
        cv2.waitKey()
        cv2.destroyAllWindows()
    sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
    
    cv_show(sobelx,'sobelx')

    效果:

    sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
    sobelx = cv2.convertScaleAbs(sobelx) #白到黑是正数,黑到白就是负数了,所有的负数会被截断成0,所以要取绝对值
    cv_show(sobelx,'sobelx')

    效果:

    sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
    sobely = cv2.convertScaleAbs(sobely)  
    cv_show(sobely,'sobely')

    效果:

    sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0) #分别计算x和y,再求和的结果
    cv_show(sobelxy,'sobelxy')

    效果:

    sobelxy=cv2.Sobel(img,cv2.CV_64F,1,1,ksize=3) #直接计算的效果,不是很好
    sobelxy = cv2.convertScaleAbs(sobelxy) 
    cv_show(sobelxy,'sobelxy')

    效果:

    img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)
    cv_show(img,'img')

    效果:

    img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)
    sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
    sobelx = cv2.convertScaleAbs(sobelx)
    sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
    sobely = cv2.convertScaleAbs(sobely)
    sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0)
    cv_show(sobelxy,'sobelxy')

    效果:

    img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)
    
    sobelxy=cv2.Sobel(img,cv2.CV_64F,1,1,ksize=3)
    sobelxy = cv2.convertScaleAbs(sobelxy) 
    cv_show(sobelxy,'sobelxy')

    效果:

    图像梯度-Scharr算子与laplacian算子

     

    Scharr算子Gy右边的-3改为3

     laplacian算子

    #不同算子的差异
    img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)
    sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
    sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
    sobelx = cv2.convertScaleAbs(sobelx)   
    sobely = cv2.convertScaleAbs(sobely)  
    sobelxy =  cv2.addWeighted(sobelx,0.5,sobely,0.5,0)  
    
    scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
    scharry = cv2.Scharr(img,cv2.CV_64F,0,1)
    scharrx = cv2.convertScaleAbs(scharrx)   
    scharry = cv2.convertScaleAbs(scharry)  
    scharrxy =  cv2.addWeighted(scharrx,0.5,scharry,0.5,0) 
    
    laplacian = cv2.Laplacian(img,cv2.CV_64F)
    laplacian = cv2.convertScaleAbs(laplacian)   
    
    res = np.hstack((sobelxy,scharrxy,laplacian))
    cv_show(res,'res')

    效果:

  • 相关阅读:
    centos7下mysql双主+keepalived
    Nginx 性能优化有这篇就够了!
    mysql对自增主键ID进行重新排序
    nginx 配置文件 2019-12-20
    zabbix服务端接收的数据类型,便于编写脚本向服务端提交数据
    zabbix自动注册,实现自动添加机器,减少人工干预
    zabbix企业微信告警配置教程
    websocket 连接测试端口服务是否正常代码
    mongodb Sort排序能够支持的最大内存限制为32M Plan executor error during find: FAILURE
    rabbitmq 的安装配置使用
  • 原文地址:https://www.cnblogs.com/SCCQ/p/12291183.html
Copyright © 2011-2022 走看看