用python画人物素描_python实现图片素描效果

代码如下:from PIL import Image #图像处理模块import numpy as npa = np.asarray(Image.open("这里是原图片的路径").convert('L')).astype('float')#将图像以灰度图的方式打开并将数据转为float存入np中depth = 10. # (0-100)grad = np.gradient(...
摘要由CSDN通过智能技术生成

代码如下:

from PIL import Image #图像处理模块

import numpy as np

a = np.asarray(Image.open("这里是原图片的路径").convert('L')).astype('float')

#将图像以灰度图的方式打开并将数据转为float存入np中

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) #光源归一化

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以教你用Python Turtle库人物素描。首先,我们需要导入Turtle库: ```python import turtle ``` 然后,我们需要设置布的大小和背景颜色: ```python turtle.setup(800, 800) turtle.bgcolor('white') ``` 接着,我们需要定义一个函数来人物素描: ```python def draw_sketch(): # 头部 turtle.pensize(2) turtle.penup() turtle.goto(0, 100) turtle.pendown() turtle.circle(50) # 眼睛 turtle.penup() turtle.goto(-20, 120) turtle.pendown() turtle.circle(10) turtle.penup() turtle.goto(20, 120) turtle.pendown() turtle.circle(10) # 鼻子 turtle.penup() turtle.goto(0, 100) turtle.pendown() turtle.right(90) turtle.forward(20) turtle.left(135) turtle.forward(30) turtle.right(135) turtle.forward(30) # 嘴巴 turtle.penup() turtle.goto(-25, 80) turtle.pendown() turtle.left(90) turtle.circle(25, 180) # 身体 turtle.penup() turtle.goto(0, 50) turtle.pendown() turtle.forward(100) turtle.right(90) turtle.forward(150) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(150) # 手臂 turtle.penup() turtle.goto(-100, 50) turtle.pendown() turtle.right(45) turtle.forward(75) turtle.right(45) turtle.forward(50) turtle.right(45) turtle.forward(75) turtle.penup() turtle.goto(100, 50) turtle.pendown() turtle.left(45) turtle.forward(75) turtle.left(45) turtle.forward(50) turtle.left(45) turtle.forward(75) # 腿 turtle.penup() turtle.goto(-50, -100) turtle.pendown() turtle.right(45) turtle.forward(100) turtle.right(45) turtle.forward(50) turtle.right(45) turtle.forward(100) turtle.penup() turtle.goto(50, -100) turtle.pendown() turtle.left(45) turtle.forward(100) turtle.left(45) turtle.forward(50) turtle.left(45) turtle.forward(100) # 结束 turtle.hideturtle() ``` 最后,我们只需要调用这个函数就可以人物素描了: ```python draw_sketch() ``` 完整代码如下: ```python import turtle def draw_sketch(): turtle.setup(800, 800) turtle.bgcolor('white') turtle.pensize(2) turtle.penup() turtle.goto(0, 100) turtle.pendown() turtle.circle(50) turtle.penup() turtle.goto(-20, 120) turtle.pendown() turtle.circle(10) turtle.penup() turtle.goto(20, 120) turtle.pendown() turtle.circle(10) turtle.penup() turtle.goto(0, 100) turtle.pendown() turtle.right(90) turtle.forward(20) turtle.left(135) turtle.forward(30) turtle.right(135) turtle.forward(30) turtle.penup() turtle.goto(-25, 80) turtle.pendown() turtle.left(90) turtle.circle(25, 180) turtle.penup() turtle.goto(0, 50) turtle.pendown() turtle.forward(100) turtle.right(90) turtle.forward(150) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(150) turtle.penup() turtle.goto(-100, 50) turtle.pendown() turtle.right(45) turtle.forward(75) turtle.right(45) turtle.forward(50) turtle.right(45) turtle.forward(75) turtle.penup() turtle.goto(100, 50) turtle.pendown() turtle.left(45) turtle.forward(75) turtle.left(45) turtle.forward(50) turtle.left(45) turtle.forward(75) turtle.penup() turtle.goto(-50, -100) turtle.pendown() turtle.right(45) turtle.forward(100) turtle.right(45) turtle.forward(50) turtle.right(45) turtle.forward(100) turtle.penup() turtle.goto(50, -100) turtle.pendown() turtle.left(45) turtle.forward(100) turtle.left(45) turtle.forward(50) turtle.left(45) turtle.forward(100) turtle.hideturtle() draw_sketch() ``` 运行代码,就可以看到出的人物素描了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值