返回

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

图片如图,可以自己随便选择一张图片:

20行代码来生成一个自己的素描图片_获取图片

图片生成坐标如何输出:

如图1:

20行代码来生成一个自己的素描图片_python_02

获取图片对角的平方根

A=np.sqrt(grad_x**2+grad_y**2+1.)
uni_x=grad_x/A
uni_y=grad_y/A
uni_z=1. /A

20行代码来生成一个自己的素描图片_获取图片_03

处理光源

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:

20行代码来生成一个自己的素描图片_python_04

光源归一化

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')

原图片:

20行代码来生成一个自己的素描图片_获取图片_05

效果图:

20行代码来生成一个自己的素描图片_python_06

完整代码:

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')

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
84. 求1+2+…+n 2022-11-16 04:54:59