数字图像处理(一)

《数字图像处理基础与应用》朱虹 编著

题目一:读入一幅灰度图像求图像的灰度直方图

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

img=np.array(Image.open('G:/实验室学习资料/数字图像处理/lab1/1_2.bmp').convert('L'))

plt.figure("lena")
arr=img.flatten()
# arr: 需要计算直方图的一维数组, bins: 直方图的柱数,可选项,默认为10, normed: 是否将得到的直方图向量归一化,默认为1. facecolor: 直方图颜色, alpha: 透明度
# n: 直方图向量,是否归一化由参数设定; bins: 返回各个bin的区间范围; patches: 返回每个bin里面包含的数据,是一个list
n,bins,patches=plt.hist(arr,bins=256,normed=1,facecolor='green',alpha=0.75)
plt.show()

运行效果图如下:

题目二:读入一幅彩色图像,求其R、G、B三个通道的灰度直方图

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

src=Image.open('G:/实验室学习资料/数字图像处理/lab1/1_1.jpg')

#把彩色图像分割成红绿蓝三种颜色
r,g,b=src.split()

plt.figure("Lab_2")
arr1=np.array(r).flatten()
plt.hist(arr1,bins=256,normed=1,facecolor='red',edgecolor='red')

arr2=np.array(g).flatten()
plt.hist(arr2,bins=256,normed=1,facecolor='green',edgecolor='green')

arr3=np.array(b).flatten()
plt.hist(arr3,bins=256,normed=1,facecolor='blue',edgecolor='blue')

plt.show()

运行效果如下所示:

用python将矩阵存储为bmp图像:

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
#读入数据arr,此处为手动设置
arr = np.array([[100,76,0,132,7,7],[28,7,7,7,7,243],[28,243,7,100,7,28],[100,7,7,0,7,100],[100,0,7,7,132,0],[132,132,132,100,7,100]]) 
#将元素类型更改为'uint8'
arr=np.array(arr,dtype='uint8')
arr=Image.fromarray(arr)
#第一个参数为存储的地址和名称,第二个参数为存储的图片类型
arr.save('test.bmp','bmp')

plt.hist(arr,bins=256,normed=1,facecolor='green',alpha=0.75)
plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值