专栏首页Fdu弟中弟python-转手绘

python-转手绘


用numpy和PIL库进行图像变换。

灰度化

一张图片无非就是个二维数组,其中的每个元素又是一个三元组[R,G,B],改变RGB的值也就改变了图片的色调。

from PIL import Image
import numpy as np

a = np.array(Image.open('test.jpg').convert('L')) #二维数组里存储的将不再是RGB,而只有灰度值
print(a.shape,a.dtype) #获取图片的二维数组大小和格式

#不同的变化
#b = 255 - a
#b = (100/255)*a+150
b = 255*(a/255)**2 

im = Image.fromarray(b.astype('uint8'))
im.save('result.jpg')

转手绘效果

不只是PS可以这样,用python也可以。

手绘效果其实就是由立体效果和明暗效果叠加而成的。

灰度表示的是图像的明暗变化,而梯度表示的是灰度的变化率,所以可以通过调整像素之间的梯度值来改变明暗程度。

立体效果则通过添加虚拟深度值来实现。

from PIL import Image
import numpy as np

a = np.asarray(Image.open('test.jpg').convert('L')).astype('float')

depth = 10. 						#深度值 (0-100)
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. 					#光源的方位角度,弧度值
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)							#防止数据越界,将生成的灰度值裁剪至0-255

im = Image.fromarray(b.astype('uint8')) 	#重构图像
im.save('result.jpg')

原图:

手绘效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python实现手绘功能

    手绘图确实很好看,但对于手残党的我,只能呵呵一笑,今天就用代码来实现手绘功能,把普通的图片转换为手绘图片。

    罗罗攀
  • 干货,用Python绘制“手绘风格”图表的所有方法!

    今天给大家带来绘制“手绘风格”可视化作品的小技巧,主要涉及Python编码绘制,内容如下:

    小F
  • 手把手|如何用Python绘制JS地图?

    大数据文摘
  • Python实现图片手绘效果

    在家闲来无事看了会MOOC上的数据分析相关视频,以下部分内容来自于北京理工大学MOOC上的《Python数据分析与展示》。

    啤酒单恋小龙虾
  • 4种绘制带误差线的柱形图

    python100天还在继续,到第三周的时候就显得有点难啃了,笔记中很难进行很好的转述,因此就对原有的python3笔记进行补充。今天的推送主要解决不同方式下的...

    生信菜鸟团
  • Python绘制饼状图

    饼状图(pie chart)一般用于描述分类型数据的相对频数或百分数频数分布,呈现部分与总体的关系。

    阿黎逸阳
  • 教你用不到 20 行代码制作一个 “手绘风” 视频

    本期推文与计算机视觉相关,用不到 20 行 Python 代码将一张图片由自然风转化为手绘风,期间未对图片进行任何预处理、后处理

    AirPython
  • python可视化 | 北京近一年来空气质量热力图,看看北京的沙尘暴真的多吗

    记得早上起床,打开手机看到好多盆友发来的询问关怀“听说北京沙尘暴了,注意安全哦”,比心 ! 随后拉开窗帘,果然是漫天黄沙还伴随着大风,打开朋友圈满屏的银翼杀手、...

    郭好奇同学
  • 【Python】Python处理图像五个有趣场景,很实用!

    Python像是叮当猫的口袋,几乎什么都能做,适合外行小白们去摸索学习,能极大的增加对编程的兴趣。

    黄博的机器学习圈子

扫码关注云+社区

领取腾讯云代金券