简易的素描图片转换流程与实现
前言
之前经常在网上看到用PS实现真实图片到素描图片的转换,但是流程都大同小异,身为一只程序猿,必须来个一键转化额。
国际惯例,参考博客:
Photoshop基础教程:混合模式原理篇
颜色减淡的原理讲解以及应用
ps是如何通过最小值获得描边效果的?
图纸转线稿背后的计算机绘图原理
步骤与实现
网上的流程大都分为四个步骤:
- 去色:直接把彩图转成灰度图或者转成HSV/HSL后将饱和度S的值置零
- 反向:将去色后的图像颜色去反,直接用255减
- 滤镜:高斯模糊或者PS里面的最小值滤镜
- 颜色减淡:PS里面叫
color dodge
那么python实现也很方便:
第一步:读图片,转灰度图
img = cv2.imread('./images/zly1.jpg')
# 去掉饱和度
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
第二步:反向,图像就变成了底片色
# 反相
img_inv = 255.0 - img_gray
第三步:高斯模糊或者最小值滤镜
# 高斯模糊
# img_filt = cv2.GaussianBlur(img_inv, ksize=(3, 3),sigmaX=0, sigmaY=0)
# 最小值滤镜
img_filt = np.zeros_like(img_inv,dtype=np.uint8)
radius = 3;
for i in range(radius,img_inv.shape[0]-radius):for j in range(radius,img_inv.shape[1]-radius):img_filt[i,j] = np.min(img_inv[i-radius:i+radius,j-radius:j+radius])
关于高斯模糊或者最小值滤镜的原理,可以看上面的参考博客,实测发现最小值滤镜效果或更好。
第四步:颜色减淡
# color dodge
A = img_gray.astype('float32')
B = img_filt.astype('float32')
img_dodge = A+(A*B)/(255.0-B)
原理在第一篇参考博客,其实就是一个公式,用于混合两组图像。
可视化
plt.figure(figsize=(8,8))
plt.subplot(121)
plt.imshow(img/255.0)
plt.axis('off')
plt.subplot(122)
plt.imshow(img_dodge/255.0,cmap='gray')
plt.axis('off')
我颖美如画…
有兴趣可以自行去按照流程在PS中操作一遍,可以达到一样的效果。
后记
记录一下这个好玩的流程,代码公布在微信公众号简介的github
中,有兴趣或者疑问欢迎关注公众号,私信讨论问题,持续更新骨骼动画、机器学习、图像相关有趣实用的知识点。
简易的素描图片转换流程与实现相关推荐
- img解包打包工具_Python开发GUI实战:图片转换素描画工具!
奋斗没有终点好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . ! 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己继 ...
- python将图片转换成动漫,python实现图片转换成素描和漫画格式
本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码 # -*- coding: utf-8 -*- import cv2 f ...
- python 人像素描_基于python实现把图片转换成素描
这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...
- 利用Matlab将图片转换成素描(简笔画)风格
题目: 利用Matlab将图片转换成素描(简笔画)风格 记得曾经看过别人的网络头像,是那种类似简笔画或素描的图片,一直以来都想做一个类似的头像,但始终不得要领.今天当我看到文献[1]中的图5.28时( ...
- python画素描画_基于python实现把图片转换成素描
这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...
- python 人像素描_python如何将图片转换素描画
代码如下 # -*- coding:utf-8 -*- import cv2 import numpy as np from tkinter import filedialog, Tk from os ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己继续 ...
- 用python画apc图_Python开发GUI实战:图片转换素描画工具!
奋斗没有终点好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . ! 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己继 ...
- python base64 实现_用Python开发GUI实战教程:图片转换素描画工具
python作为胶水语言,它几乎是无所不能的,但个人一直觉得在GUI开发方面,python可以算作是短板了,为什么?因为性能-python的性能问题,往往出现在其他编程语言对其的鄙夷中.但不管如何py ...
最新文章
- bootstrap.yml和application.yml的区别
- 大数据集群部署时ssh的公钥和似钥作用汇总
- ubuntu安装php5-mysql_Ubuntu下安装Apache2, php5 mysql
- SDN精华问答 | SDN的核心技术是什么?
- 吴恩达新书手稿完工,现在开放免费下载 | 资源
- 解决 webpack-dev-server 不能自动刷新的问题
- YDOOK:VSC VisioStudio Code 设置 鼠标滚轮缩放字体大小 滚轮控制字体放大缩小
- 水系图一般在哪里找得到_腾远带你了解:虹吸排水系统原理、组成及应用优势...
- centos服务器修改密码,linux centos默认的密码
- 【最新黑苹果】Big Sur/Win双系统-小米笔记本pro/gtx 安装教程!
- 如何使用plink进行二分类性状的GWAS分析并计算PRS得分
- redis的二进制安全机制理解
- AriaNg 是一个让 aria2 更容易使用的现代 Web 前端
- DGV:人类基因组结构变异数据库
- 光敏电阻5506主要参数_光敏电阻详细参数?
- 微信小程序开发04 性能优化:借助微信开发者工具提升小程序性能
- C#如何立即回收内存
- R--ggplot包的学习(3)
- 令人感动的电影---虎兄虎弟
- Python数据分析实战,,美国总统大选数据可视化分析[基于pandas]
热门文章
- python编写安全工具_Python3学习系列(四):编写属于自己的邮件伪造工具
- String Modification CodeForces - 1316B(规律)
- 2016重庆计算机一级考试题型,重庆计算机一级考试真题2016年最新(笔试+上机).doc...
- 微信小程序怎么新建php文件,微信小程序中创建小程序页面的步骤介绍(图文)...
- 计算机图形学二维变换知识点,计算机图形学 二维变换及二维.ppt
- 深度学习(18)神经网络与全连接层一: 数据加载
- ACM及各类程序竞赛专业术语
- IEEE 754标准--维基百科
- java kafka 多线程消费
- 玩转GIT系列之【git的分支操作(查看分支/切换分支/新建分支/删除分支)】