【AI达人养成营】Python基本图像处理
收藏
总所周知Python是一门很牛的语言,它不仅在数据处理中表现出色,用于图片处理也是非常好用的。 用Python做图像处理有很多种方法,应该都听说过PIL,但是由于其年代久远,所以产生了Pillow这个大宝贝。
- 安装Pillow
想要使用Pillow呢,就要先安装了,使用pip可以很好的安装Pillow。
pip install pillow
- 基本的图像处操作
1.要想处理图片首先呢就是载入图片
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
#获取图片
Image.open("f:/picture/t.jpg")
#显示图片
def showimg(img, isgray=False):
plt.axis("off")
if isgray == True:
plt.imshow(img, cmap='gray')
else:
plt.imshow(img)
plt.show()
2.获取图像信息
print(im.format, im.size, im.mode)
3.更改图片格式
from PIL import Image
Image.open(infile).save(outfile, 'JEPG')
4.图像颜色处理
众所周知,图片其实是由一个个像素组成的,而像素是由数字代表的,所以其可以看成为一二维矩阵,如果是灰度图,每个点就有一个 0 到 255 到数值表示点的灰度。如果是彩色的图像,每个点就有三个 0 到 255 到数值,分别表示 R(红色),G(绿色),B(蓝色)的值,有的格式还会有第四个值用来表示透明度。既然可以把图像转化成一个矩阵,那么图像的处理就是对这个矩阵的变换。例如,创建缩略图就是在图像的横纵坐标上采样,每隔几行或几列取出一个点组成一个新点图像。而图像的滤镜就是通过一个函数或规则,将图像的点的数值进行一些运算而得到的另一个矩阵。
灰度处理
灰度处理方法很多此处只列举一种方法
im = Image.open("f:/pic/t.jpg")
im_gray = im.convert('L')
showimg(im_gray, True) #该函数见上文
好玩的示例图像风格转换:
from PIL import Image
import numpy as np
# 原始图片路径
f = input('请输入文件路径')
fgai = input('请输入保存路径')
original_image_path = f
# 要生成的手绘图片路径,可自定义
handdrawn_image_path = fgai
# 加载原图,将图像转化为数组数据
a=np.asarray(Image.open(original_image_path).convert('L')).astype('float')
depth=10.
#取图像灰度的梯度值
grad=np.gradient(a)
#取横纵图像梯度值
grad_x,grad_y=grad
grad_x=grad_x*depth/100.
grad_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.
#光源对x轴的影响
dx=np.cos(vec_el)*np.cos(vec_az)
dy=np.cos(vec_el)*np.sin(vec_az)
dz=np.sin(vec_el)
#光源归一化,把梯度转化为灰度
b=255*(dx*uni_x+dy*uni_y+dz*uni_z)
#避免数据越界,将生成的灰度值裁剪至0-255内
b=b.clip(0,255)
#图像重构
im=Image.fromarray(b.astype('uint8'))
print('完成')
im.save(handdrawn_image_path)
0
收藏
请登录后评论