请选择 进入手机版 | 继续访问电脑版

Python实现手绘图效果实例分享

2021-04-09| 发布者: 小鑫鑫鑫h| 查看: 83

首先我们来看看原图: 接着我们来看看效果图: 通过分析我们不难发现以下特征: 主要颜色为黑白灰 边界线条较重 相同或相近色趋于白色 略有光源效果 需要用到的库有: nu

首先我们来看看原图:

82916cf3a532d3082e8f2bb6e4ae156.png

接着我们来看看效果图:

eccc7092ec2c79e134b67c4b3e4cbab.png

通过分析我们不难发现以下特征:

  • 主要颜色为黑白灰

  • 边界线条较重

  • 相同或相近色趋于白色

  • 略有光源效果

需要用到的库有:

  • numpy

  • PIL

代码实现:

import聽numpy聽as聽np
from聽PIL聽import聽Image


baseImg聽=聽Image.open("./img/myimg2.jpg").convert("L")聽聽#聽这里放置你要手绘的图片原图
a聽=聽np.array(baseImg).astype("float")

depth聽=聽8.
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.sin(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)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽#聽限制

img聽=聽Image.fromarray(b.astype("uint8"))聽#聽重构图像
img.save("./toImg/myImage1.jpg")聽聽聽聽聽聽聽聽聽#聽保存图像[/code]

实例扩展:

[code] from PIL import Image import numpy as np #为了便于文件的导入,可以使用相对路径,将文件和程序放在同一个文件夹下 vec_el=np.pi/2.2 vec_az=np.pi/4. depth=10. im=Image.open("HIT2.jpg").convert('L') a=np.asarray(im).astype('float') grad=np.gradient(a) grad_x,grad_y=grad grad_x=grad_x*depth/100. grad_y=grad_y*depth/100. dx=np.cos(vec_el)*np.cos(vec_az) dy=np.cos(vec_el)*np.sin(vec_az) dz=np.sin(vec_el) A=np.sqrt(grad_x**2+grad_y**2+1.) uni_x=grad_x/A uni_y=grad_y/A uni_z=1./A a2=255*(dx*uni_x+dy*uni_y+dz*uni_z) a2=a2.clip(0,255) im2=Image.fromarray(a2.astype('uint8')) im2.save('hit2-SH.jpg')[/code]

到此这篇关于Python实现手绘图效果实例分享的文章就介绍到这了,更多相关Python实现手绘图效果内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


来源:炫丽网 https://www.xuanli.net/

0人已打赏

0条评论 83人参与 网友评论 文明发言,请先登录注册

文明上网理性发言,请遵守国家法律法规。

最新评论

相关推荐
    ©2001-2018 炫丽网 https://www.xuanli.net/中国互联网举报中心非经营性网站公安网备