zoukankan      html  css  js  c++  java
  • 图像识别之边缘识别

    '''
        边缘识别:物体的边缘检测是物体识别常用的手段。边缘检测常用亮度梯度方法。
                通过识别亮度梯度变化最大的像素点从而检测出物体的边缘。
    
            常用边缘检测算法相关API:
                # 索贝尔边缘识别
                # cv.CV_64F:卷积运算使用数据类型为64位浮点型(保证微分的精度)
                # 1:在水平方向使用索贝尔偏微分识别边缘
                # 0:不再垂直方向使用索贝尔偏微分识别边缘
                # ksize:卷积核为5*5的方阵
                cv.Sobel(original, cv.CV_64F, 1, 0, ksize=5)
                # 拉普拉斯边缘识别
                cv.Laplacian(original, cv.CV_64F)
                # Canny边缘识别
                # 50:水平方向阈值  240:垂直方向阈值
                cv.Canny(original, 50, 240)
    '''
    
    import cv2 as cv
    
    original = cv.imread("./ml_data/chair.jpg", cv.IMREAD_GRAYSCALE)
    print(original.shape)
    cv.imshow('Original', original)
    # 索贝尔边缘识别---水平方向
    hsobel = cv.Sobel(original, cv.CV_64F, 1, 0, ksize=5)
    cv.imshow('H-Sobel', hsobel)
    # 索贝尔边缘识别---垂直方向
    vsobel = cv.Sobel(original, cv.CV_64F, 0, 1, ksize=5)
    cv.imshow('V-Sobel', vsobel)
    # 索贝尔边缘识别---两方向
    sobel = cv.Sobel(original, cv.CV_64F, 1, 1, ksize=5)
    cv.imshow('Sobel', sobel)
    
    # 拉普拉斯边缘识别
    laplacian = cv.Laplacian(original, cv.CV_64F)
    cv.imshow('Laplacian', laplacian)
    
    # Canny边缘识别
    canny = cv.Canny(original, 50, 240)
    cv.imshow('Canny', canny)
    cv.waitKey()
    '''
        亮度提升:OpenCV提供了直方图均衡化的方式实现亮度提升,更有利于边缘识别与物体识别模型的训练。
            OpenCV直方图均衡化相关API:
                    # 彩色图转为灰度图
                    gray = cv.cvtColor(original, cv.COLOR_BGR2GRAY)
                    # 直方图均衡化
                    equalized_gray = cv.equalizeHist(gray)
    
    '''
    import cv2 as cv
    
    original = cv.imread('./ml_data/sunrise.jpg')
    cv.imshow('Original', original)
    # 彩色图转为灰度图
    gray = cv.cvtColor(original, cv.COLOR_BGR2GRAY)
    cv.imshow('Gray', gray)
    # 直方图均衡化
    equalized_gray = cv.equalizeHist(gray)
    cv.imshow('Equalized_gray', equalized_gray)
    
    # 直接对颜色亮度均衡化
    yuv = cv.cvtColor(original, cv.COLOR_BGR2YUV)
    yuv[..., 0] = cv.equalizeHist(yuv[..., 0])
    equalized_color = cv.cvtColor(yuv, cv.COLOR_YUV2BGR)
    cv.imshow('Equalized  Color', equalized_color)
    
    
    cv.waitKey()

      

  • 相关阅读:
    poj3252(组合数)
    cf-Global Round2-E. Pavel and Triangles
    cf-Global Round2-D. Frets On Fire(二分)
    cf-Global Round2-C. Ramesses and Corner Inversion(思维)
    trick
    2019ICPC南京网络赛B super_log(a的b塔次方)
    欧拉定理,欧拉降幂
    F. Moving On
    Codeforces Round #200 (Div. 1)D. Water Tree
    hdu5452
  • 原文地址:https://www.cnblogs.com/yuxiangyang/p/11257855.html
Copyright © 2011-2022 走看看