zoukankan      html  css  js  c++  java
  • 3直方图与二值化,图像梯度

    1直方图

    #直方图--增强对比度
    def equalHist_demo(image):
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        dst = cv.equalizeHist(gray)
        cv.imshow("equalHist_demo", dst)
    
    
    def clahe_demo(image):
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        clahe = cv.createCLAHE(clipLimit=5.0, tileGridSize=(8, 8))
        dst = clahe.apply(gray)
        cv.imshow("clahe_demo", dst)
    #直方图投影--视频跟踪

    2二值化

    #二值化
    import cv2 as cv
    import numpy as np
    
    
    def threshold_demo(image):
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY|cv.THRESH_OTSU)#OTSU计算阈值
        print("threshold value %s"%ret)
        cv.imshow("binary", binary)
    
    
    def local_threshold(image):
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10)
        cv.imshow("binary", binary)
    
    
    def custom_threshold(image):#局部二值化
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        h, w = gray.shape[:2]
        m = np.reshape(gray, [1, w*h])
        mean = m.sum() / (w*h)
        print("mean : ", mean)
        ret, binary = cv.threshold(gray, mean, 255, cv.THRESH_BINARY)
        cv.imshow("binary", binary)
    
    
    print("--------- Python OpenCV Tutorial ---------")
    src = cv.imread("D:/vcprojects/images/test.png")
    cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
    cv.imshow("input image", src)
    custom_threshold(src)
    cv.waitKey(0)
    
    cv.destroyAllWindows()

    3图像梯度

    #图像梯度
    def lapalian_demo(image):#拉普拉斯算子
        #dst = cv.Laplacian(image, cv.CV_32F)
        #lpls = cv.convertScaleAbs(dst)
        kernel = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
        dst = cv.filter2D(image, cv.CV_32F, kernel=kernel)
        lpls = cv.convertScaleAbs(dst)
        cv.imshow("lapalian_demo", lpls)
    
    
    def sobel_demo(image):#soble算子
        grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)
        grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)
        gradx = cv.convertScaleAbs(grad_x)
        grady = cv.convertScaleAbs(grad_y)
        cv.imshow("gradient-x", gradx)
        cv.imshow("gradient-y", grady)
    
        gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0)
        cv.imshow("gradient", gradxy)
  • 相关阅读:
    jsp常用指令
    jsp中的内置对象(9个)、作用
    collection的框架结构
    java——异常
    Spring的依赖注入(DI)三种方式
    mybatis——动态sql
    spring 中事务的PROPAGATION_REQUIRED,Readonly的解释
    Jquery ajax提交表单几种方法详解
    springmvc注解和参数传递
    springmvc和struts2的区别
  • 原文地址:https://www.cnblogs.com/wml2018/p/12181670.html
Copyright © 2011-2022 走看看