前言

暗恋多年的女神今天突然找我,难道她…

事情是这样的:

女神: 在不在,能不能把一张人像照转成手绘风的照片
own: 在的,没问题!

难道她终于知道我心意了,要给我单独发她的私照!

没办法,女神的愿望必须满足。开工!

主要采用的技术点:
Python + Numpy + PIL

在正文代码开始前,大家先看看最初原图和转换手绘风图片前后对比。

当然了,我先查了手绘的三个基本特点:

  • 图片可单通道灰度图
  • 边缘线条较重可当成黑色,相同或相近像素值趋向白色
  • 光源效果下,灰度变化类似于人类视觉的远近

下面开始介绍,手绘照实现步骤:

  1. 读取图片,转化为数组

因为要对图像的像素计算,可以先把图片先转化为数组。代码如下:

a = np.asarray(Image.open("man.jpg").convert('L')).astype('float')
  1. 计算 x,y,z 轴梯度值,归一化

照片对边缘区域更侧重,计算梯度是定位图片边缘部分最有效方式,用灰度变化来模拟图片远近效果,depth 表示预设深度,z 轴默认梯度为 1。

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
  1. 加入光源效果

根据光源不同的入射角度,对x,y,z 各轴上的梯度值有不同程度的影响,添加一个模拟光源,放置在斜上方,与 x , y 分别形成两个夹角,最后用正弦余弦函数计算出新的像素值。

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)  # 光源归一化,8 255
b = b.clip(0, 255)# 对像素值低于0,高于255部分做截断处理
  1. 导出图片,并保存
im.save("man_shouhui.jpg")

好了~
用 Python将一张图片转化为手绘风格,就这么轻松搞定了!

不说了,赶紧去告诉女神她交代的任务完成了!

创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

Dragon少年 | 文

如果本篇博客有任何错误,请批评指教,不胜感激 !

女神找我帮忙--图片转成手绘,该不该答应?相关推荐

  1. python将照片转换成手绘图片

    最近在b站学习数据分析时,看到了可以用numpy将照片转换成手绘效果.自己整上代码学习试了半天,调整了参数并看了效果.代码如下: # -*- coding: utf-8 -*- "" ...

  2. 手绘线条图画机器人_怎么把照片转换成手绘图画?怎么加水印?

    怎么把照片转换成手绘图画?附讲加水印​mp.weixin.qq.com 先来个转换前后的对比图 手机下载美图秀秀(一定要用手机下载,电脑端没有绘画机器人功能). 点开美图秀秀后,在页面右下方点击&qu ...

  3. Python 图片转化为手绘

    #图片转化为手绘 from PIL import Image import numpy as np vec_e1 = np.pi / 2.2 vec_az = np.pi / 4 depth = 10 ...

  4. 如何用计算机将图片整成手绘画,美图秀秀教你把照片快速变身CG手绘图!

    喜欢CG手绘风格图的亲们有福利了,现在不需要有绘画功底也能轻松打造GC手绘图啦,没错,就是用大家熟悉的图片处理软件美图秀秀来完成,简单几个步骤,你的真人照就能变成富有艺术气息的CG手绘图,赶快来学习下 ...

  5. 如何用计算机将图片整成手绘画,PS教你将照片做成手绘作品 -电脑资料

    手绘图片很漂亮,那我们如何将照片转换为手绘效果呢,今天小编就为大家带来PS教你将照片做成手绘作品,喜欢的朋友可以一起来学习先上几张成品: 风景也可以做成漂亮的绘画作品, Step 1 打开一张人像照片 ...

  6. 如何用计算机将图片整成手绘画,【新手教程】如何将手绘作品转变成电子档,并让其更像“作品”?...

    把彩铅画.水彩画等纸质作品数码化,可以使你的画看起来更加像一个正式的作品. 对于一个初学者,最初的练习肯定是以临摹或者是画一些小物件为主,你可能觉得它顶多是一个练习,成为作品还远远不够,其实不然,只要 ...

  7. 用Python将GIF图片转化成手绘图

    今天带大家来将GIF图片转化成一张好看的手绘图片 用的是PIL读取图片 和numpy处理图片 完整代码如下: from PIL import Image import numpy as npvec_e ...

  8. Python小程序——将彩色图片转变为手绘效果

    简介 Python有着强大的功能,其中Numpy库可以以点的方式画图,还有一种妙用就是改变图片 该程序主要代码来源于MOOC,想学习完整过程戳这里>>MOOC嵩天 我跟着视频敲了这个程序的 ...

  9. 适合普通人的108个短视频项目:抖音手绘玩法揭秘(1)

    前段时间抖音上有一类视频非常火爆,是用手绘做出来的动画视频. 那么今天猫哥就为大家揭开手绘视频神秘的面纱,让大家零距离接触. 一.什么是抖音手绘动画? 先来回顾一下什么是抖音手绘动画? (案例1)[思 ...

最新文章

  1. RabbitMQ学习系列(五): RPC 远程过程调用
  2. C语言函数strstr()分析及实现
  3. UI组件之TextView及其子类(三)ToggleButton和Switch
  4. 发布5个月全系下跌500 麒麟980+40W快充 多亏了华为P30!
  5. 转载:glut.h 与 stdlib.h中 的exit()重定义问题的解决
  6. 你最近学到的 飞鸽传书 东西的题目
  7. 代码编辑器[0] - Vim/gVim[1] - Vim 的快捷键操作
  8. 左边导航条动态增加或缩短高度以及放大缩小问题的解决方法
  9. Windows 批处理(bat)语法大全
  10. OOP的核心思想是什么?请简述你对OOP的理解
  11. 成都中忻嘉业:抖音小店经营一段时间后能改类目吗
  12. 基于websocket的跨平台通信——iPhone/iPad/Mac控制树莓派(二):Swift控制端搭建,网络延迟显示
  13. Google ProtoBuf简介
  14. 苹果iphone手机哪些机型支持刷公交卡
  15. 坏掉充电宝内部电池怎么充电?教你用它的电池做一个新的充电宝
  16. 谷歌浏览器批量删除书签
  17. 搜索与回溯:迷宫问题(migong)
  18. 微信小程序运营系列(八)——怎么玩转中高频行业运营?
  19. 推荐一款Mac上好用的Markdown编辑器
  20. 荒岛余生2java攻略_荒岛余生2时空探秘_荒岛余生2:时空探秘游戏心得与记录_安卓应用游戏下载- AppChina应用汇...

热门文章

  1. CSDN20181218博客黑板报
  2. 渲染算法学习(四)-- Environment Lighting
  3. Unity资源加载简析(一)Resources
  4. vue中的路由跳转和传参
  5. 快递查询单号查询,分享简单好用查询技巧
  6. Pure Virtual Function
  7. 《构建之法:现代软件工程》阅读提问
  8. 商业智能时代,大数据分析行业前景
  9. 第1关:ZooKeeper初体验
  10. AI绘画小程序图片转漫画SaaS多开