您当前的位置:首页 > 计算机 > 编程开发 > Python

图像直方图原理与Python实现

时间:09-09来源:作者:点击数:

图像灰度直方图用来统计0到255的各灰度值在图像中的出现频次,也就是有多少个像素的值为0,多少个像素的值为1,等等。对于彩色图像,直方图为红、绿、蓝各分量的统计结果。

from os.path import isfile

from PIL import Image

def his(imageFile):

    #确保参数为图像文件

    assert isfile(imageFile) and imageFile.endswith(('.bmp', '.jpg', '.png')), 'Must be image file'

    #打开图像文件

    im = Image.open(imageFile)

    #获取图像颜色深度

    c = im.getpixel((0,0))

    #默认为彩色图像

    flag = False

    #灰度图像

    if isinstance(c, int):

        flag = True

    r = [0] * 256

    g = [0] * 256

    b = [0] * 256

    #获取图像尺寸

    width, height = im.size

    for w in range(width):

        for h in range(height):

            #读取像素颜色,并统计各分量值的频次

            c = im.getpixel((w,h))

            if flag:

                r[c] += 1

            else:

                r[c[0]] += 1

                g[c[1]] += 1

                b[c[2]] += 1

    if flag:

        return r

    else:

        return r+g+b

def his1(imageFile):

    #真正使用时建议直接直接使用pillow库中Image对象的histogram()获取直方图

    im = Image.open(imageFile)

    return im.histogram()

print(his('6.jpg')==his1('6.jpg'))

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门