学累了,咱就玩点有意思的,今天来玩玩图像转换以及用代码实现图像手绘效果
我喜欢古天乐啊哈哈,这里选用的是古天乐的海报,下面呈上原图
确认过眼神,是我喜欢的人
现在开始进入正题,首先是加载本文所需的工具库 ,这里我们需要用到的是Image和numpy
我们要明白的是图像转换主要是干嘛?图像的变换其实就是读入图像后,获得像素RGB值,修改后保存为新的文件
那么我们就先读入图片,然后再做处理:先是使用Image.open读取图片,然后用np.array将图像转变成数组的形式,接着获取数组a的维度,之后将图片的每个像素拿去计算RGB三个通道的补值,即得到原来像素相反的颜色,最后将数组b重新生成一个图像再保存为jpg形式就OK了
这里看一下效果图哈
emmm...不太好看哈
咱们试试别的操作:下面的代码将原来的三维数组转化成了二维数组,原来的彩色图片转换成了灰度值图片
数值b也不是原来求的那个补值,这里用的是255-a表示在对应的颜色通道减去他自己变成黑白底片的效果
convert('L')的作用就是将彩色图片变成灰度值的图片,这样生成的数组不再是三维而是二维数组
效果如下:
黑白底片效果出来了,咱们继续调整看看~
下面使用的是区间变换的方法,主要是将原来的图片转换成颜色比较淡的灰度的图片
见证奇迹的时刻到了,帅气的古仔回归了yeah
不过这颜色比较淡诶,咱们试试将像素平方获取颜色比较深的灰度的图片
看看效果图啦~你会发现~发现~古天乐是真的帅啊~迷
deidei~~~收起口水
咱们总结一下基本套路:获取图像-->转化成数组-->计算-->重新生成图像对象-->保存为jpg格式
其实要改也就是计算部分
下面咱们试试用代码实现图像转手绘的效果~
用的还是上面的工具库,首先读取图片,接着将图片转换成数组并将原来的数组转化成浮点型的~
然后获取图像灰度的梯度值,分别计算出横纵图像的梯度值balabala~下面代码写有注释
上面的操作完成后,将数组b重新转换成图像对象,然后就是保存啦
最后效果如下:
就这样手绘效果成功展现出来啦
最后我还搞了搞我头像,好啦,今天就到这里了,我是大肥豆子,一个学得乱七八糟的Python小小白,感觉我在自言自语~啊哈哈~~继续沉迷于我的古天乐
、