用python进行图片素描

本文介绍了如何使用Python将图片转换为素描风格。通过获取图片的灰度值,进行图像梯度处理、归一化操作,再加上光源效果模拟视觉远近,最终重构像素并保存图片,实现图片的素描转换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

首先介绍素描——使用单一色彩表现明度变化的绘画。

由素描的定义可显而易见,我们目标则是将图片转为灰度图,即单通道。

为了表现色彩的明度变化,我们可以在代码中增加一种光源效果,从而达到灰度变化以模拟视觉的远近效果

所需库:

from PIL import Image
import numpy as np

代码介绍:

1.获取图片灰度转入数组,方便接下的计算。

a=np.asarray(Image.open("2022.PNG").convert("L")).astype("float")

2.分别获取图像梯度值 进行归一化处理

depth=10
grad=np.gradient(a) #取图像灰度的梯度值
grad_x,grad_y=grad #分别取纵横向图像梯度值
grad_x=grad_x * depth/100.
grad_y=grad_y * depth/100.

3.归一化操作

A=np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.) #取平方根
uni_x=grad_x / A
uni_y=grad_y / A
uni_z=1. / A

4.添加光源效果,考虑光源对xyz轴影响,再用sin和cos函数进行计算(网上搜到的)

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轴的影响

5.计算新的像素值,并将像素值高于255,低于0的值筛出

b=255*(dx * uni_x 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值