手绘效果

手绘效果

利用到的数学知识

手绘效果的几个特征:

黑白灰色-----------图像灰度转化

边界线条较重-----------梯度

相同或相近色彩趋于白色-----------梯度调整、梯度缩放

略有光源效果-----------投影、三角函数

黑白灰色-----------图像灰度转化

图像是由红(Red)、绿(Green)、蓝(Blue)三原色来表示真彩色,R分量,G分量,B分量的取值范围均为0~255,正常读取的图片构成的三维矩阵就是图像各像素点的RGB值。

图像的灰度化,就是让像素点矩阵中的每一个像素点都满足这样的关系:R=G=B,此时的这个值叫做灰度值:

灰度化后的R = 处理前的R * 0.299+ 处理前的G * 0.587 +处理前的B * 0.114

灰度化后的G = 处理前的R * 0.299+ 处理前的G * 0.587 +处理前的B * 0.114

灰度化后的B = 处理前的R * 0.299+ 处理前的G * 0.587 +处理前的B * 0.114

PIL库里面在灰度转化时,利用的公式

When translating a color image to greyscale (mode "L"),

the library uses the ITU-R 601-2 luma transform:

L = R * 299/1000 + G * 587/1000 + B * 114/1000

边界线条较重-----------梯度

梯度、导数、偏导数、斜度、斜率、神经网络梯度,均为同一个概念

梯度

梯度

梯度

相同或相近色彩趋于白色-----------梯度调整、梯度缩放

grad= grad*alpha

alpha取[0,1]之间的值,这样使相近颜色的值,梯度缩放到更小,即可认为颜色是差不多一样的,手绘时是白色

4.略有光源效果-----------投影、三角函数

类似之前分享文章(利用Python计算两个地理位置之间的中点)介绍的经纬度投影

投影

投影

光源效果

完整代码

可左右滑动查看代码

from PIL import Image

import numpy as np

import os

def img_handpainted(input_img_path):

img = np.array(Image.open(input_img_path).convert('L')).astype('float') #转化为灰度图

img_name=os.path.basename(input_img_path)[:-4] #获取图片名字

depth = 20. # (0-100),可以理解为图像的深淡程度

grad = np.gradient(img) #取图像灰度的梯度值

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.) #构造x和y轴梯度的三维归一化单位坐标系

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.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) #梯度与光源相互作用,将梯度转化为灰度

b = b.clip(0,255) #为避免数据越界,将生成的灰度值裁剪至0‐255区间

img_handpainted = Image.fromarray(b.astype('uint8')) #重构图像

outname='./'+img_name+'_handpainted.jpg'

img_handpainted.save(outname)

img_handpainted('./love.jpg')

代码

手绘效果

手绘效果

历史相关文章

python将图片转换成手绘_利用Python生成手绘效果的图片相关推荐

  1. 如何将夜晚图片转化为白天图片 matlab,教你简单几步将白天图片转换成夜景图_资源库...

    摘要:教你简单几步将白天图片转换成夜景图_资源库 摘要:今天分享一个有趣的教程,教大家利用滤镜和调整图层,简单几步将白天图片变成夜景图,特别实用,还能学到一个鲜为人知的调色功能,看看赶紧练练吧. 原图 ...

  2. python转换成c语言_把python转成c

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 推荐使用腾讯云 api 配套的7种常见的编程语言 sdk,已经封装了签名和请求过 ...

  3. 电脑word在哪_怎么将图片转换成Word?学会这3种方法,轻松将图片转文字!

    怎么将图片转换成Word文字?相信很多朋友都有这样的困惑,大多数人都会选择将图片里面的内容一个字一个字的录入到Word里面,这样的话会浪费我们大量的时间,这里笔者给大家介绍几种方法,不管哪一种都能够轻 ...

  4. python中颜色介意用数字表示_利用Python实现颜色色值转换的小工具

    先看看Zeplin 的颜色色值显示示例 原有处理方式 因为我会 Python (仅限于终端输入 python 然后当做计算器算,或者用 hex() 函数把十进制转换成十六进制),所以遇到这样的问题我当 ...

  5. python乘法符号手写_利用Python自动生成小学生加减乘除口算考试题卷,不再为手写算术题烦恼!...

    还在为给孩子抄各种各样的口算题而烦恼?孩子上小学一年级之后,加减乘除的口算就要开始练习了,老师肯定会让家长出题.所以我们当家长的,要提前准备一下,就利用Python开发了一套自动生成小学生口算题的小应 ...

  6. python脚本下载钉钉的文件_利用python下载钉钉群直播视频

    今年因为疫情的原因不能开学,所以很多学校都使用钉钉进行在线授课,但是在钉钉里面点击下载群直播回放的时候却发现: 真好,管理员设置了不允许下载回放. 这就完了吗?NoNoNo!既然正常途径下载不了,那么 ...

  7. python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表

    简要 利用python实现把一个工作表中的某些列,和其中单独的一列,提取成为一个个新表. 如图(处理前)蓝色部分是需要保留的列,红色是需要一项一项分出来作为单独表格的列. 其中,第一行的名字是用的回车 ...

  8. 下面哪个python库不能用于提取网页信息_利用python的webscraping库采集抓取爱帮网电话号码...

    利用python的webscraping模块抓取爱帮网电话号码,本文采集该页面的标题和2个电话号码, 具体的python代码: # -*- coding: UTF-8 -*- ''' Created ...

  9. python例题求乘客等车时间_利用Python数据处理进行公交车到站时间预测(一)

    1.数据格式 id  int  id编号 type  int   41表示站间数据,42中间站进出数据 43始末站进出数据 route_id int  线路ID号,10454,10069,120881 ...

  10. 利用python爬取58同城简历数据_利用python爬取58同城简历数据-Go语言中文社区

    利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...

最新文章

  1. LINQ 学习路程 -- 查询操作 GroupBy ToLookUp
  2. java四种线程池类型以及可选择的阻塞队列
  3. 用 Unity 探究 2D 游戏的打击感
  4. python3字符串属性(二)
  5. jar java classpath_Java ClassLoader和ClassPath
  6. 编程求以孩子兄弟表示法存储的森林的叶子结点数☆
  7. 无法远程到2008R2的解决方法
  8. shaderop的定义
  9. Linux/Windows 文件交互读取转义字符变换
  10. activemq下载安装(windows版)与实例创建,JMS模型介绍
  11. 【2022最新Java面试宝典】—— 多线程面试(60道含答案)
  12. php展厅控制系统,展厅中控系统详细介绍
  13. 如何查看远程端口是否打开
  14. 微型公司小团队对软件项目开发管理和规范化的思考
  15. 最近喜欢的几款乐器和民谣
  16. Google学术的使用指南
  17. Shiro和Spring Security的简单对比
  18. Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence
  19. 玩转Kaggle:Classify Leaves(叶子分类)——模型设计与训练
  20. Pangu and Stones(区间DP)

热门文章

  1. Filesystem Hierachy Standard 文件系统层级标准详解
  2. 2018成都大数据公司名单总汇!
  3. idea中安装uml工具插件
  4. java面试简历精通n_Java简历与面试
  5. buck dcm占空比计算_Buck知识大总结:模态分析,电感计算,EMI分析等(转)
  6. 电容或电感的电压_Buck知识大总结:模态分析,电感计算,EMI分析等(转)
  7. iic总线从机仲裁_对 IIC 总线的理解、调用函数以及常见面试问题
  8. 电脑网页如何截取全图(长图)
  9. libcef-框架架构中概念介绍-进程-线程-引用计数-字符串等(一)
  10. 微信JSSDK 音频下载speex转码问题