20行代码来生成一个自己的素描图片
发布时间:2022-11-16 05:10:47 236 相关标签: # python
20行代码来生成一个自己的素描图片
你知道用代码生成自己的一个图片素描吗?今天我们就用20行代码来生成一个自己的素描图片。
现在让我们开始吧
第一步:
导入python模块
from PIL import Image#深度 处理图像
import numpy as np #像素处理 科学运算
如何没有安装上面的模块库:
pip install PIL
pip install numpy 安装上面的库
第一步把图片生成坐标:
L=np.asarray(Image.open(r'11.jpg').convert('L')).astype('float')
depth=10. #(0-100) 深度值
grad=np.gradient(L) #获取图像灰度的梯度值
grad_x,grad_y=grad #横向图像梯度
grad_x=grad_x*depth/100
grad_y=grad_y*depth/100
图片如图,可以自己随便选择一张图片:

图片生成坐标如何输出:
如图1:

获取图片对角的平方根
A=np.sqrt(grad_x**2+grad_y**2+1.)
uni_x=grad_x/A
uni_y=grad_y/A
uni_z=1. /A

处理光源
el=np.pi/2.2 #光源俯视角度,弧度值
az=np.pi/4 #方位角度
dx=np.cos(el)*np.cos(az) #x轴影响
dy=np.cos(el)*np.sin(az) #y轴影响
dz=np.sin(el) #z轴
如图3:

光源归一化
gd=255*(dx*uni_x+dy*uni_y+dz*uni_z)
gd=gd.clip(0,255)
把数组转变成图片 重构图像
im=Image.fromarray(gd.astype('uint8'))
im.save(r'123.jpg')
原图片:

效果图:

完整代码:
from PIL import Image#深度 处理图像
import numpy as np #像素处理 科学运算
#读取图片 ->图片转变成 数组
#回是处理 -》降低 图片的计算强度
L=np.asarray(Image.open(r'11.jpg').convert('L')).astype('float')
depth=10. #(0-100) 深度值
grad=np.gradient(L) #获取图像灰度的梯度值
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
#处理光源
el=np.pi/2.2 #光源俯视角度,弧度值
az=np.pi/4 #方位角度
dx=np.cos(el)*np.cos(az) #x轴影响
dy=np.cos(el)*np.sin(az) #y轴影响
dz=np.sin(el) #z轴
#光源归一化
gd=255*(dx*uni_x+dy*uni_y+dz*uni_z)
gd=gd.clip(0,255)
#把数组转变成图片 重构图像
im=Image.fromarray(gd.astype('uint8'))
im.save(r'123.jpg')
文章来源: https://blog.51cto.com/u_15870497/5847869
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报