zoukankan      html  css  js  c++  java
  • opencv Scharr、Canny、LOG边缘提取效果对比

    # -*- coding: utf-8 -*-
    import cv2 as cv
    import numpy as np  
    import matplotlib.pyplot as plt
    
    #读取图像
    img = cv.imread('d:/paojie.png')
    img1 = cv.cvtColor(img, cv.COLOR_BGR2RGB)
    
    #转换为灰度图像
    grayImage = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    
    #高斯滤波
    gaussianBlur = cv.GaussianBlur(grayImage, (3,3), 0)
    
    #自适应阈值处理
    ret, binary = cv.threshold(gaussianBlur, 0, 255, cv.THRESH_BINARY+cv.THRESH_OTSU)
    
    #Scharr算子
    x = cv.Scharr(grayImage, cv.CV_32F, 1, 0) #X方向
    y = cv.Scharr(grayImage, cv.CV_32F, 0, 1) #Y方向
    absX = cv.convertScaleAbs(x)       
    absY = cv.convertScaleAbs(y)
    Scharr = cv.addWeighted(absX, 0.5, absY, 0.5, 0)
    
    #Canny算子
    gaussian = cv.GaussianBlur(grayImage, (3,3), 0) #高斯滤波降噪
    Canny = cv.Canny(gaussian, 50, 150) 
    
    #LOG算子
    gaussian = cv.GaussianBlur(grayImage, (3,3), 0) #先通过高斯滤波降噪
    dst = cv.Laplacian(gaussian, cv.CV_16S, ksize = 3) #再通过拉普拉斯算子做边缘检测
    LOG = cv.convertScaleAbs(dst)
    
    #效果图
    titles = ['Source Image', 'Gray Image', 'Binary Image',
              'Scharr Image','Canny Image', 'LOG Image']  
    images = [img1, grayImage, binary, Scharr, Canny, LOG]  
    for i in np.arange(6):  
       plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')  
       plt.title(titles[i])  
       plt.xticks([]),plt.yticks([])  
    plt.show()  
    

    实验输出

  • 相关阅读:
    jQuery学习笔记01
    webpack概念相关
    vue-cli4 配置公用scss样式的方法
    vue-cli4的路径别名
    webpack学习03——搭建本地服务器
    webpack学习02——Plungin的使用
    VSCode生成vue项目模板
    Vue的使用方法
    webpack学习01——初次打包
    文献随笔目录
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12751631.html
Copyright © 2011-2022 走看看