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()  
    

    实验输出

  • 相关阅读:
    flask项目部署
    FastDFS分布式文件系统
    《app》团队冲刺二
    《APP》团队开发一
    软工二年级团队项目----自律小助手
    团队项目新闻app的需求分析
    团队成员及团队项目
    团队冲刺第八天
    团队冲刺第七天
    团队冲刺第六天
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12751631.html
Copyright © 2011-2022 走看看