zoukankan      html  css  js  c++  java
  • python opencv——边缘检测算子

    原始图片:

     对图片进行的操作:

    1. 原始图片反色

    2. 原始图片通过SOBEL进行边缘检测,然后反色

    3. 原始图片通过ROBERT进行边缘检测,然后反色

    代码:

    import matplotlib.pyplot as plt
    import cv2
    import numpy as np
    img = cv2.imread('02.bmp', 0)
    dst = cv2.bitwise_not(img)
    cv2.imshow("reserve", dst)#反色
    x = cv2.Sobel(dst, cv2.CV_16S, 1, 0)
    y = cv2.Sobel(dst, cv2.CV_16S, 0, 1)
    Scale_absX = cv2.convertScaleAbs(x)  # convert 转换  scale 缩放
    Scale_absY = cv2.convertScaleAbs(y)
    result = cv2.addWeighted(Scale_absX, 0.5, Scale_absY, 0.5, 0)
    
    
    kernelx = np.array([[-1,0],[0,1]], dtype=int)
    kernely = np.array([[0,-1],[1,0]], dtype=int)
    x_ = cv2.filter2D(dst, cv2.CV_16S, kernelx)
    y_ = cv2.filter2D(dst, cv2.CV_16S, kernely)
    #转uint8
    absX = cv2.convertScaleAbs(x_)
    absY = cv2.convertScaleAbs(y_)
    Roberts = cv2.addWeighted(absX,0.5,absY,0.5,0)
    v3=cv2.bitwise_not(result)
    v4=cv2.bitwise_not(Roberts)
    titles = ['dip_switch_02','src', 'Sobel', 'Roberts']
    imgs = [img, dst, v3, v4]
    
    cv2.imshow('img', img)
    cv2.imshow("reserve", dst)#反色
    v3=cv2.bitwise_not(result)
    cv2.imshow("v3", v3)#反色
    v4=cv2.bitwise_not(Roberts)
    cv2.imshow("v4", v4)#反色
    #
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    运行结果:

     最好不要合并结果,合并会使底色出现问题,一个一个输出会好一些。

    1. 原始图片反色

    2. 原始图片通过SOBEL进行边缘检测,然后反色

    3. 原始图片通过ROBERT进行边缘检测,然后反色

  • 相关阅读:
    2020/5/8
    2020/5/8
    2020/5/6
    2020/4/30
    2020/4/29
    2020/4/28
    2020/4/27
    KMP算法详解
    博客搬家声明
    洛谷P2831 NOIP2016 愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/ngxt/p/12499308.html
Copyright © 2011-2022 走看看