女神找我帮忙--图片转成手绘,该不该答应?
前言
暗恋多年的女神今天突然找我,难道她…
事情是这样的:
女神: 在不在,能不能把一张人像照转成手绘风的照片
own: 在的,没问题!
难道她终于知道我心意了,要给我单独发她的私照!
没办法,女神的愿望必须满足。开工!
主要采用的技术点:
Python + Numpy + PIL
在正文代码开始前,大家先看看最初原图和转换手绘风图片前后对比。
当然了,我先查了手绘的三个基本特点:
- 图片可单通道灰度图
- 边缘线条较重可当成黑色,相同或相近像素值趋向白色
- 光源效果下,灰度变化类似于人类视觉的远近
下面开始介绍,手绘照实现步骤:
- 读取图片,转化为数组
因为要对图像的像素计算,可以先把图片先转化为数组。代码如下:
a = np.asarray(Image.open("man.jpg").convert('L')).astype('float')
- 计算 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
- 加入光源效果
根据光源不同的入射角度,对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部分做截断处理
- 导出图片,并保存
im.save("man_shouhui.jpg")
好了~
用 Python将一张图片转化为手绘风格,就这么轻松搞定了!
不说了,赶紧去告诉女神她交代的任务完成了!
创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
Dragon少年 | 文
如果本篇博客有任何错误,请批评指教,不胜感激 !
女神找我帮忙--图片转成手绘,该不该答应?相关推荐
- python将照片转换成手绘图片
最近在b站学习数据分析时,看到了可以用numpy将照片转换成手绘效果.自己整上代码学习试了半天,调整了参数并看了效果.代码如下: # -*- coding: utf-8 -*- "" ...
- 手绘线条图画机器人_怎么把照片转换成手绘图画?怎么加水印?
怎么把照片转换成手绘图画?附讲加水印mp.weixin.qq.com 先来个转换前后的对比图 手机下载美图秀秀(一定要用手机下载,电脑端没有绘画机器人功能). 点开美图秀秀后,在页面右下方点击&qu ...
- Python 图片转化为手绘
#图片转化为手绘 from PIL import Image import numpy as np vec_e1 = np.pi / 2.2 vec_az = np.pi / 4 depth = 10 ...
- 如何用计算机将图片整成手绘画,美图秀秀教你把照片快速变身CG手绘图!
喜欢CG手绘风格图的亲们有福利了,现在不需要有绘画功底也能轻松打造GC手绘图啦,没错,就是用大家熟悉的图片处理软件美图秀秀来完成,简单几个步骤,你的真人照就能变成富有艺术气息的CG手绘图,赶快来学习下 ...
- 如何用计算机将图片整成手绘画,PS教你将照片做成手绘作品 -电脑资料
手绘图片很漂亮,那我们如何将照片转换为手绘效果呢,今天小编就为大家带来PS教你将照片做成手绘作品,喜欢的朋友可以一起来学习先上几张成品: 风景也可以做成漂亮的绘画作品, Step 1 打开一张人像照片 ...
- 如何用计算机将图片整成手绘画,【新手教程】如何将手绘作品转变成电子档,并让其更像“作品”?...
把彩铅画.水彩画等纸质作品数码化,可以使你的画看起来更加像一个正式的作品. 对于一个初学者,最初的练习肯定是以临摹或者是画一些小物件为主,你可能觉得它顶多是一个练习,成为作品还远远不够,其实不然,只要 ...
- 用Python将GIF图片转化成手绘图
今天带大家来将GIF图片转化成一张好看的手绘图片 用的是PIL读取图片 和numpy处理图片 完整代码如下: from PIL import Image import numpy as npvec_e ...
- Python小程序——将彩色图片转变为手绘效果
简介 Python有着强大的功能,其中Numpy库可以以点的方式画图,还有一种妙用就是改变图片 该程序主要代码来源于MOOC,想学习完整过程戳这里>>MOOC嵩天 我跟着视频敲了这个程序的 ...
- 适合普通人的108个短视频项目:抖音手绘玩法揭秘(1)
前段时间抖音上有一类视频非常火爆,是用手绘做出来的动画视频. 那么今天猫哥就为大家揭开手绘视频神秘的面纱,让大家零距离接触. 一.什么是抖音手绘动画? 先来回顾一下什么是抖音手绘动画? (案例1)[思 ...
最新文章
- RabbitMQ学习系列(五): RPC 远程过程调用
- C语言函数strstr()分析及实现
- UI组件之TextView及其子类(三)ToggleButton和Switch
- 发布5个月全系下跌500 麒麟980+40W快充 多亏了华为P30!
- 转载:glut.h 与 stdlib.h中 的exit()重定义问题的解决
- 你最近学到的 飞鸽传书 东西的题目
- 代码编辑器[0] - Vim/gVim[1] - Vim 的快捷键操作
- 左边导航条动态增加或缩短高度以及放大缩小问题的解决方法
- Windows 批处理(bat)语法大全
- OOP的核心思想是什么?请简述你对OOP的理解
- 成都中忻嘉业:抖音小店经营一段时间后能改类目吗
- 基于websocket的跨平台通信——iPhone/iPad/Mac控制树莓派(二):Swift控制端搭建,网络延迟显示
- Google ProtoBuf简介
- 苹果iphone手机哪些机型支持刷公交卡
- 坏掉充电宝内部电池怎么充电?教你用它的电池做一个新的充电宝
- 谷歌浏览器批量删除书签
- 搜索与回溯:迷宫问题(migong)
- 微信小程序运营系列(八)——怎么玩转中高频行业运营?
- 推荐一款Mac上好用的Markdown编辑器
- 荒岛余生2java攻略_荒岛余生2时空探秘_荒岛余生2:时空探秘游戏心得与记录_安卓应用游戏下载- AppChina应用汇...