前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图像直方图原理与Python实现

图像直方图原理与Python实现

作者头像
Python小屋屋主
发布2018-04-16 15:13:36
7080
发布2018-04-16 15:13:36
举报
文章被收录于专栏:Python小屋Python小屋

图像灰度直方图用来统计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'))

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档