python PIL.Image 图像处理

图像处理

图像的RGB色彩模式

图像一般使用RGB色彩模式,即每个像素点的颜色由RGB组成(红、绿、蓝)
RGB三个颜色通道的变化和叠加得到各种颜色(256^3=1.68e+7),其中
R红色,取值范围 0-255
G绿色,取值范围 0-255
B蓝色,取值范围 0-255
RGB形成的颜色包括了人类视力所能感知的所有颜色

PIL库

PIL,python image library
PIP库是一个具有强大图像处理能力的第三方库
cmd–>pip install pillow

PIL类Image
Image是PIP库中代表一个图像的类(对象)
图像加载

from PIL import Image
import numpy as np
im=np.array(Image.open("E:/python/Spyder_analysis/plot.png"))
print(im.shape,im.dtype)
print(im)

图像是一个三维数组,维度分别是高度、宽度和像素RGB值

图像的处理步骤:
1、打开图像
2、处理图像
3、生成图像
4、保存图像

打开图像可以按原像像素打开图像
可以按灰度打开图像.convert(‘L’) 生成二维数据,生成灰度的变化
a=np.array(Image.open(“test.jpg”).convert(‘L’))

图像的变换

读入图像,获得像素RGB值,修改后保存为新的文件

from PIL import Image
import numpy as np
a=np.array(Image.open("E:/python/Spyder_analysis/test.jpg"))
print(a.shape,a.dtype)
b=[255,255,255]-a
im=Image.fromarray(b.astype('uint8'))
im.save("E:/python/Spyder_analysis/plot_255_8.jpg")

图像变换的处理

b=255-a    			#方式一取反 
c=(100/255)*a+150   #区间变换(区间压缩,扩充区间范围)
d=255*(a/255)**255  #像素平方

图像的手绘效果

from PIL import Image
import numpy as np
a=np.asarray(Image.open('13639685_123501617185_2.jpg').convert('L')).astype('float')

depth=10.
grad=np.gradient(a) #取图像灰度的梯度值
grad_x,grad_y=grad   #分别取横纵图像梯度值
grad_x=grad_x*depth/100.
grap_y=grad_y*depth/100.
A=np.sqrt(grad_x**2+grad_y**2+1.)
uni_x=grad_x/A
uni_y=grad_y/A
uni_z=1./A

vec_el=np.pi/2.2    #光源的俯视角度,弧度值
vec_az=np.pi/4      #光源的方位角度,弧度值
dx=np.cos(vec_el)*np.cos(vec_az)    #光源对x轴的影响
dy=np.cos(vec_el)*np.sin(vec_az)    #光源对y轴的影响
dz=np.sin(vec_el)                   #光源对z轴的影响

b=255*(dx*uni_x+dy*uni_y+dz*uni_z)  #光源归一化
b=b.clip(0,255)

im=Image.fromarray(b.astype('uint8'))   #重构图像
im.save('13639685_123501617185_2_rejpg.jpg')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值