使用PIL计算直方图并显示

什么是直方图?

直方图就是统计图像中像素点为某个颜色值的个数。
下面是python代码

# -*- coding: utf-8 -*-
from PIL import Image
from PIL import ImageDraw
im = Image.open('code1.png')
im = im.convert('L')
width, height = im.size
pix = im.load()
a = [0]*256
for w in xrange(width):
	for h in xrange(height):
		p = pix[w,h]
		a[p] = a[p] + 1

s = max(a)
print a,len(a),s 	#长度256,a保存的分别是颜色范围0-255出现的次数
image = Image.new('RGB',(256,256),(255,255,255))  
draw = ImageDraw.Draw(image)  

for k in range(256):
	#print k,a[k],a[k]*200/s
	a[k] = a[k]*200/s		#映射范围0-200
	source = (k,255)   		#起点坐标y=255, x=[0,1,2....]
	target = (k,255-a[k])	#终点坐标y=255-a[x],a[x]的最大数值是200,x=[0,1,2....]
	draw.line([source, target], (100,100,100))
image.show()

 例子分别是经典的雷娜图和纯图的直方图统计

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值