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

作者:FXL 时间:2021-03-19 11:28:00 

首先我们来看看原图:

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

接着我们来看看效果图:

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

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

  • 主要颜色为黑白灰

  • 边界线条较重

  • 相同或相近色趋于白色

  • 略有光源效果

需要用到的库有:

  • numpy

  • PIL

代码实现:

import numpy as npfrom PIL import ImagebaseImg = 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/Auni_y = grad_y/Auni_z = 1./Avec_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")         # 保存图像

实例扩展:


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

来源:https://www.py.cn/toutiao/19652.html

标签:Python,手绘图
0
投稿

猜你喜欢

  • Python Pandas读写txt和csv文件的方法详解

    2022-08-05 17:06:31
  • python中使用xlrd、xlwt操作excel表格详解

    2023-06-25 03:59:51
  • Python 操作 PostgreSQL 数据库示例【连接、增删改查等】

    2021-12-14 00:54:08
  • pycharm激活码免费分享适用最新pycharm2020.2.3永久激活

    2021-12-11 10:17:09
  • python+OpenCV人脸识别考勤系统实现的详细代码

    2021-11-01 01:28:44
  • Python3 Tkinter选择路径功能的实现方法

    2022-03-12 19:39:28
  • python Opencv实现停车位识别思路详解

    2023-10-20 21:54:25
  • Python 移动光标位置的方法

    2023-09-07 03:15:25
  • 开展全面的网站评估

    2007-09-27 19:21:00
  • OpenCV图像处理GUI功能详解

    2021-01-26 15:55:34
  • Python3.6通过自带的urllib通过get或post方法请求url的实例

    2023-01-21 09:32:41
  • em与px的区别以及em特点和应用

    2008-11-11 12:03:00
  • pytorch教程之网络的构建流程笔记

    2021-11-24 10:58:59
  • 用户不需要信息快餐

    2009-02-25 12:34:00
  • Python学习笔记之函数的定义和作用域实例详解

    2021-09-09 11:05:30
  • python numpy库中数组遍历的方法

    2021-03-20 16:57:28
  • Python中删除文件的几种方法实例

    2021-02-02 05:57:13
  • python并发编程之多进程、多线程、异步和协程详解

    2021-12-10 00:20:35
  • 教你如何用python操作摄像头以及对视频流的处理

    2021-03-01 05:59:55
  • golang组件swagger生成接口文档实践示例

    2023-09-19 11:29:39
  • asp之家 网络编程 m.aspxhome.com