• 5-5 灰度直方图源码


    直方图是为了统计图像中每个像素灰度出现的概率,这是它的中心思想,也是它的基本原则。

    所以它的横坐标是0-255,总共256种灰度等级。而纵坐标是出现的概率p。这是它的基本思想。

    这个count中记录的就是我们当前灰度图像每一个像素值在每一个灰度等级下出现的概率。它总共有256个灰度等级。因为它计算出来的灰度等级概率的话有可能是一个浮点类型。

    使用for的形式循环遍历图片中的每一个数据。

    每一个灰度等级出现的概率,这个概率的分子是count里面的内容。分母是我们所有的像素总的个数。

    可以使用opencv或者matplotlib的绘图方法。

    还要算一下每一个bar它所在的整个的百分比。

    # 本质:统计每个像素灰度 出现的概率 0-255 p
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    img = cv2.imread('image0.jpg',1)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    count = np.zeros(256,np.float)
    for i in range(0,height):
        for j in range(0,width):
            pixel = gray[i,j]# 获取每一个灰度等级的像素 使用当前的行和列来进行获取 所以是i和j的下标        
            index = int(pixel) # int(每一个像素)
            count[index] = count[index]+1
    for i in range(0,255):
        count[i] = count[i]/(height*width)
        #这里使用matplotlib的绘图方法
    x = np.linspace(0,255,256)
    y = count
    plt.bar(x,y,0.9,alpha=1,color='b')
    plt.show()
    cv2.waitKey(0)

    # 本质:统计每个像素灰度 出现的概率 0-255 p
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    img = cv2.imread('image2.jpg',1)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    count = np.zeros(256,np.float)
    for i in range(0,height):
        for j in range(0,width):
            pixel = gray[i,j]# 获取每一个灰度等级的像素 使用当前的行和列来进行获取 所以是i和j的下标        
            index = int(pixel) # int(每一个像素)
            count[index] = count[index]+1
    for i in range(0,255):
        count[i] = count[i]/(height*width)
        #这里使用matplotlib的绘图方法
    x = np.linspace(0,255,256)
    y = count
    plt.bar(x,y,0.9,alpha=1,color='b')
    plt.show()
    cv2.waitKey(0)

    # 本质:统计每个像素灰度 出现的概率 0-255 p
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    img = cv2.imread('image3.png',1)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    count = np.zeros(256,np.float)
    for i in range(0,height):
        for j in range(0,width):
            pixel = gray[i,j]# 获取每一个灰度等级的像素 使用当前的行和列来进行获取 所以是i和j的下标        
            index = int(pixel) # int(每一个像素)
            count[index] = count[index]+1
    for i in range(0,255):
        count[i] = count[i]/(height*width)
        #这里使用matplotlib的绘图方法
    x = np.linspace(0,255,256)
    y = count
    plt.bar(x,y,0.9,alpha=1,color='b')
    plt.show()
    cv2.waitKey(0)

  • 相关阅读:
    SpringBoot日记——删除表单-Delete篇
    SpringBoot日记——信息修改PUT篇
    SpringBoot日记——按钮的高亮和添加篇
    SpringBoot日记——Thymeleaf进阶小篇
    SpringBoot日记——登录与拦截器篇
    SpringBoot日记——国际化篇
    SpringBoot日记——实战篇——Url定向
    SpringBoot日记——SpringMvc自动配置与扩展篇
    SpringBoot日记——Thymeleaf模板引擎篇
    【Leetcode】22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/9743266.html
Copyright © 2020-2023  润新知